x = [1, 2, 3]
y = [4, 5, 6]
zipped = zip(x, y)
list(zipped)
x2, y2 = zip(*zip(x, y))
x == list(x2) and y == list(y2)
返回什么类型的对象*zip(x, y)
?为什么
res = *zip(x, y)
print(res)
不工作?
x = [1, 2, 3]
y = [4, 5, 6]
zipped = zip(x, y)
list(zipped)
x2, y2 = zip(*zip(x, y))
x == list(x2) and y == list(y2)
返回什么类型的对象*zip(x, y)
?为什么
res = *zip(x, y)
print(res)
不工作?
Python 中的星号“运算符”不返回对象;这是一个句法结构,意思是“用给定的列表作为参数调用函数”。
所以:
x = [1, 2, 3]
f(*x)
相当于:
f(1, 2, 3)
关于此的博客条目(不是我的):http ://www.technovelty.org/code/python/asterisk.html
*zip(x, y)
不返回类型,*
用于解压缩函数的参数,在你的情况下zip
。
和x = [1, 2, 3]
的y = [4, 5, 6]
结果zip(x, y)
是[(1, 4), (2, 5), (3, 6)]
。
这意味着zip(*zip(x, y))
与 相同zip((1, 4), (2, 5), (3, 6))
,其结果变为[(1, 2, 3), (4, 5, 6)]
。
python 中的*
运算符通常称为 scatter,它用于将元组或列表分散到多个变量中,因此通常用于输入参数。
http://en.wikibooks.org/wiki/Think_Python/Tuples
双星**
在字典上执行相同的操作,对于命名参数非常有用!