zip函数
将序列压缩成一个可迭代对象(也能用next函数和方法v)格式:
代码语言:javascript复制zip(iterable, ...)
合并序列:
代码语言:javascript复制# 返回一个zip对象,在for循环中相当于[(x1, y1, z1), ...](本身返回的不是这个)
xyz = zip([x1, x2, x3], [y1, y2, y3], [z1, z2, z3])
for x, y, z in xyz:
print(x, y, z)
字典键值互换:
代码语言:javascript复制old = {'a':1, 'b':2, 'c':3}
# new:{1:'a', 2:'b', 3:'c'}
new = dict(zip(old.values(), old.keys()))
解压:
代码语言:javascript复制# 注意用'*'解压后就不能再用'*'解压了
it = zip(old1, old2)
# 直接解压(相当于把迭代器的所有内容返回)
print(*it)
# new1, new2的内容与old1,old2相同,类型为元组
new1, new2 = zip(*it)
map函数
对序列的每一项进行某个操作,返回一个新的序列 格式:
代码语言:javascript复制# 注意function是函数名,不用带括号
map(function, iterable, ...)
将输入的字符串转为数字列表:
代码语言:javascript复制# 打蓝桥杯那会天天用
map(int, input().split())
通过lambda函数操作多个序列:
代码语言:javascript复制# 返回一个序列,里面是数组[(1, 4), (2, 5), (3, 6)]
map(lambda x, y : (x, y), [1,2,3], [4,5,6])
不传入function时,有点像zip函数:
代码语言:javascript复制# 返回一个序列,里面是数组[(1, 4), (2, 5), (3, 6)]
map(None, [1,2,3], [4,5,6])
还可以自定义函数,格式如下:
代码语言:javascript复制def fun(x):
# 对x进行操作
# 返回一个新的x
return new_x