序列操作技巧

2023-07-30 17:43:40 浏览数 (1)

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

0 人点赞