在Python中,* zip(list1,list2)返回什么类型的对象?

时间:2012-03-17 22:44:15

标签: python list zip python-3.2

  

可能重复:
  Python: Once and for all. What does the Star operator mean in 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)

不起作用?

3 个答案:

答案 0 :(得分:4)

Python中的星号“operator”不返回对象;它是一个句法结构,意思是“用作为参数给出的列表来调用函数。”

所以:

x = [1,2,3]
F(* X)

相当于:

f(1,2,3)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

*zip(x, y)未返回类型,*用于unpack arguments到函数,在您的情况下再次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)]