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?

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)

What type of object does *zip(x, y) return? Why

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

doesn't work?


The asterisk "operator" in Python does not return an object; it's a syntactic construction meaning "call the function with the list given as arguments."

So:

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

is equivalent to:

f(1, 2, 3)

Blog entry on this (not mine): http://www.technovelty.org/code/python/asterisk.html


The * operator in python is commonly known as scatter, it is useful for scatter tuples or lists into a number of variables, and thus is commonly used for input arguments. http://en.wikibooks.org/wiki/Think_Python/Tuples

The double star ** does the same operation on a dictionary, and is very useful for named arguments!


*zip(x, y) does not return a type, the * is used to unpack arguments to a function, in your case again zip .

With x = [1, 2, 3] and y = [4, 5, 6] the result of zip(x, y) is [(1, 4), (2, 5), (3, 6)] .

This means that zip(*zip(x, y)) is the same as zip((1, 4), (2, 5), (3, 6)) and the result of that becomes [(1, 2, 3), (4, 5, 6)] .

链接地址: http://www.djcxy.com/p/53638.html

上一篇: 在下面的代码中,zip(* res)在Python中意味着什么?

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