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

In Python what type of object does *zip(list1, list2) return?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python: Once and for all. What does the Star operator mean in Python?

1
2
3
4
5
6
7
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)返回什么类型的对象?为什么?

1
2
res = *zip(x, y)
print(res)

不管用吗?


python中的星号"operator"不返回对象;它是一种句法结构,意思是"使用作为参数提供的列表调用函数"。

所以:

x=〔1, 2, 3〕f(*x)

相当于:

F(1, 2, 3)

关于这个的博客条目(不是我的):http://www.technowlety.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/thinku python/tuples

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