2012-03-17 10 views
0

可能性の重複:
Python: Once and for all. What does the Star operator mean in Python?Pythonでは、* zip(list1、list2)はどんなタイプのオブジェクトを返しますか?

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) 

は動作しません。

+0

2番目の例は、「オブジェクトを返す」ため、機能しません。 –

答えて

4

Pythonのアスタリスク "演算子"はオブジェクトを返しません。これは構文上の意味で、「引数として与えられたリストを持つ関数を呼び出す」という意味です。

だから:

X = [1、2、3]
F(* X)

と等価である:

F(1、2、3)

これに関するブログのエントリー(私ではない):http://www.technovelty.org/code/python/asterisk.html

+0

Pythonのドキュメントでは、このコンテキストで '*'を呼び出していますが、それはやや誤解を招きます。直観的には、演算子はオブジェクトを返さなければなりませんが、これは本当に構文的な構造です。 – Christophe

0

pythonの*演算子は、一般的にスキャッターとして知られていますスキャプ・タプルやリストを複数の変数に変換するために使用されます。したがって、一般に入力引数に使用されます。 http://en.wikibooks.org/wiki/Think_Python/Tuples

ダブルスター**は、辞書で同じ操作を行い、名前付き引数の場合に非常に便利です!

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)]になることを意味します。

関連する問題