Python 的 *zip和zip(*)的2个小疑问,求助各位大神

问题1:为什么*zip(iter1,iter2)可以打印,但不可以赋值给其他变量
x = [1, 2, 3]
y = [4, 5, 6]
print("ss2:",*zip(x,y))#ss: (1, 4) (2, 5) (3, 6) 
zipped2 = *zip(x,y)#报错 #print(zipped2)
print(zipped2)


问题2:为什么​list(zip(*二维列表))可以,​list(zip(*一维列表))报错?
src = [[1,2], [3,4], [5,6]]
print(list(zip(*src)))#[(1, 3, 5), (2, 4, 6)]
src2=[1,2,3]
print(list(zip(*src2)))#报错

星号表达式(*expressoin)不可单独使用

可参考:

https://blog.csdn.net/weixin_41521681/article/details/103528136

问题2 zip函数的参数类型为可迭代的对象  *二维列表返回每个一维列表 *一维列表返回列表中的单个元素 

 

星号表达式可以赋值给变量,但是必须以元组或列表形式,直接赋值不行。使用:

zipped2 = *zip(x,y),#在末尾加个逗号转换为元组赋值给变量,或:zipped1 = [*zip(x, y)]。