zip()和zip(*)的区别与使用
简介
zip(iteration)
传入一个参数时
zip(iteration)
: 它的参数为多个可迭代对象,作用是聚合每个可迭代对象中的元素。
从iteration中依次取一个元组,组成一个元组。
传入两个参数时 zip(a,b)
zip()函数分别从a和b依次各取出一个元素组成元组,再将依次组成的元组组合成一个新的迭代器–新的zip类型数据。
- 注意:
- 要求a与b的维数相同,当两者具有相同的行数与列数时,正常组合对应位置元素即可;
- 当a与b的行数或列数不同时,取两者结构中最小的行数和列数,依照最小的行数和列数将对应位置的元素进行组合;这时相当于调用itertools.zip_longest(*iterables)函数。
使用
>>> grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
>>> list(zip(*grid))
[(3, 2, 9, 0), (0, 4, 2, 3), (8, 5, 6, 1), (4, 7, 3, 0)]
>>> list(zip(grid))
[([3, 0, 8, 4],), ([2, 4, 5, 7],), ([9, 2, 6, 3],), ([0, 3, 1, 0],)]