前言:一位小白大部分时间不是在读代码,就是在读代码的路上。巧了,我就是一个小白。
学习函数最快的方法就是:用到实际问题中
eg:每打印3个python内置函数就换一行
供选择的函数有:
zip()
filter()
enumerate()
dir(__builtins__)
要求:从中选取一个和lambda匿名函数结合使用完成(不重要,不用lambda也可以做出来)
首先看三个函数怎么使用:
zip函数:
# zip函数可以将两个列表长度相同一一对应合并为元组
# 如果长度不同,以短的为主
# 返回一个可迭代对象
test_list = [1, 2, 3]
test_tuple = (1, 2, 3)
print(list(zip(test_list, test_tuple))) # [(1, 1), (2, 2), (3, 3)]
A = ["a", "b", "c", "d"]
B = [1, 2, 3, 4]
print(tuple(zip(A, B))) # (('a', 1), ('b', 2), ('c', 3), ('d', 4))
filter函数:
# filter(function, iterable)
# function是函数(可用lambda),决定iterable序列每一项去留
# filter从(字典或者列表)筛选元素,按顺序返回可迭代对象(可以遍历)
# filter占用内存少
# 第一个参数函数返回False时,第二个参数相应值被删除。
def is_odd(n): # 奇数返回1(True),筛选出奇数
return n % 2 == 1
list1 = filter(is_odd, [1, 2, 3, 4, 5]) # print(list(list1)) # [1, 3, 5] print(tuple(list1)) # (1, 3, 5)
enumerate函数:
# enumerate函数将’可迭代对象‘(如列表)每个元素取出来加上索引。 # 以元组返回,只能用来遍历不能直接打印,直接打印就是:这样的一个可迭代类型 lis = ['a', 'b', 'c'] for i in enumerate(lis): print(i, end='') # (0, 'a')(1, 'b')(2, 'c')
首先用print打印出list(enumerate(dir(__builtins__)))
[(0, 'ArithmeticError'), (1, 'AssertionError'), (2, 'AttributeError'), (3, 'BaseException'), ......]
换行的条件我们看出需要用里面的数字
那么代码:
# 每打印3个python内置函数就换一行
for i in list(enumerate(dir(__builtins__))): # 153个
if (i[0] + 1) % 3== 0:
print("{:25}".format(i[1])) #25个宽度是因为内置函数中名字长度最长的不超过25
else:
print("{:25}".format(i[1]), end='')
用上lambda:
# 每打印3个python内置函数就换一行
f = lambda i: (i[0] + 1) % 3
for i in list(enumerate(dir(__builtins__))): # 153个
if f(i)== 0:
print("{:25}".format(i[1]))
else:
print("{:25}".format(i[1]), end='')
打印出来就是这个效果:
是不是看到很多熟悉的函数?这下不怕不知道该学什么内置函数了。
自学的小伙伴可以联系我报名特训班。



