2

可能重复:
Python:一劳永逸。星号运算符在 Python 中是什么意思?

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)

不工作?

4

3 回答 3

7

Python 中的星号“运算符”不返回对象;这是一个句法结构,意思是“用给定的列表作为参数调用函数”。

所以:

x = [1, 2, 3]
f(*x)

相当于:

f(1, 2, 3)

关于此的博客条目(不是我的):http ://www.technovelty.org/code/python/asterisk.html

于 2012-03-17T22:48:59.953 回答
2

*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)]

于 2012-03-17T22:53:59.860 回答
0

python 中的*运算符通常称为 scatter,它用于将元组或列表分散到多个变量中,因此通常用于输入参数。 http://en.wikibooks.org/wiki/Think_Python/Tuples

双星**在字典上执行相同的操作,对于命名参数非常有用!

于 2012-03-17T22:50:20.377 回答