1. コードガイド
まずこのコードを見てください:
>>> name=('jack','beginman','sony','pcky') >>> age=(2001,2003,2005,2000) >>> for a,n in zip(name,age): print a,n
出力:
jack 2001
beginman 2003
sony 2005
pcky 2000
このコードをもう一度見てください:
all={"jack":2001,"beginman":2003,"sony":2005,"pcky":2000} for i in all.keys(): print i,all[i]
出力:
sony 2005
pcky 2000
jack 2001
beginman 2003
それらの違いを見つけてください?
最も明白な方法は次のとおりです。最初の方法はシンプルで柔軟性があり、連続して入力できます。
2. zip() 関数
Python の組み込み関数です (シーケンスに関連する組み込み関数は、sorted()、reversed()、enumerate()、zip()) です。 () と zip() はシーケンス (リスト) オブジェクトを返し、reversed()、enumerate() はイテレータ (シーケンスに似た) を返します
>>> type(sorted(s)) <type 'list'> >>> type(zip(s)) <type 'list'> >>> type(reversed(s)) <type 'listreverseiterator'> >>> type(enumerate(s)) <type 'enumerate'>
では、zip() 関数とは何でしょうか?
help(zip) を見てみましょう:
>>> help(zip)
モジュール __builtin__ の組み込み関数 zip に関するヘルプ:
zip(...)
zip ( seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
タプルのリストを返します。各タプルには以下が含まれます。各引数シーケンスの i 番目の要素
は、最も短い引数シーケンスの長さに切り詰められます
) は、一連の反復可能なオブジェクトをパラメーターとして受け入れます。オブジェクト内の対応する要素をタプルに変換し、これらのタプルで構成されるリストを返します。渡されたパラメータの長さが等しくない場合、返されるリストの長さは、パラメータの中で最も短いオブジェクトと同じになります。
>>> z1=[1,2,3] >>> z2=[4,5,6] >>> result=zip(z1,z2) >>> result [(1, 4), (2, 5), (3, 6)] >>> z3=[4,5,6,7] >>> result=zip(z1,z3) >>> result [(1, 4), (2, 5), (3, 6)] >>>
zip 関数は、任意の数のシーケンスをパラメータとして受け取り、同じインデックスに従ってすべてのシーケンスを 1 つの要素に結合します。各シーケンスをマージすることによって形成されるタプル、新しいシーケンスの長さ。新しいシーケンスは、パラメータ内の最も短いシーケンスに基づくものとします。さらに、(*) 演算子を zip 関数と組み合わせると、zip の逆の機能、つまりマージされたシーケンスを複数のタプルに分割することができます。
①新しいタプルのシーケンス
>>>>x=[1,2,3],y=['a','b','c']
[(1,'a'),(2,'b'),(3,'c')]
②新しいシーケンスの長さは、パラメータの中で最も短いシーケンスに基づきます。
> >> >x=[1,2],y=['a','b','c']
>>>zip(x,y)
③(*) 演算子を zip 関数と組み合わせると、zip の逆の機能、つまりマージされたシーケンスを複数のタプルに分割することができます。
>>>>x=[1,2,3],y=['a','b','c']
>>>>zip(*zip(x,y))