zip(*)
例子,拆解rs,如果使用zip(rs)则是错误的
rs = [[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
ra = list(zip(*rs)) # correct
# ra
[(1, 1, 1, 1), (2, 2, 2, 2), (3, 3, 3, 3)]
rb = list(zip(rs)) #wrong
#rb
[([1, 2, 3],), ([1, 2, 3],), ([1, 2, 3],), ([1, 2, 3],)]
*
print(*rs) # 把rs 拆解成了多个list 每一个子list相当于是rs的每一个元素。
# *rs
[1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3]
zip(*)
中的*
的作用,等价于:
_a = [1,2,3]
_b = [1,2,3]
_c = [1,2,3]
_c = [1,2,3]
output = list(zip(_b,_c,_d,_e)) # it equals to list(zip(*rs)) in which rs means [[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
output:
# [(1, 1, 1, 1), (2, 2, 2, 2), (3, 3, 3, 3)]
这样就可以理解*
为什么和zip
一起使用了,使用*以后相当于把原本的list
拆解成了“多个”子list,然后在使用zip
函数。