ホームページ  >  記事  >  バックエンド開発  >  強力なジッパー

強力なジッパー

高洛峰
高洛峰オリジナル
2016-10-20 10:00:171148ブラウズ

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 &#39;list&#39;>
 >>> type(zip(s))
 <type &#39;list&#39;>
 >>> type(reversed(s))
 <type &#39;listreverseiterator&#39;>
 >>> type(enumerate(s))
 <type &#39;enumerate&#39;>

では、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() を * 演算子と一緒に使用すると、zip 形式のリスト オブジェクトを解凍できます

>>> zip(*result)

[(1, 2, 3), (4, 5 , 6) )]

さらに理解する:

* 2 次元行列変換 (行列の行と列の交換)

たとえば、リストで記述された 2 次元行列があります

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Python リスト導出を通じてこのタスクを簡単に完了することもできます

print [ [row[col] for row in a] forcol in range (len(a[0]))]

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

もう 1 つの紛らわしい方法 zip 関数を使用するだけです:

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> zip(*a)

[ (1, 4, 7) , (2, 5, 8), (3, 6, 9)]

>>> マップ(list,zip(*a))

[[1, 4, 7], [2, 5, 8] , [3, 6, 9]]

zip 関数は、任意の数のシーケンスをパラメータとして受け取り、同じインデックスに従ってすべてのシーケンスを 1 つの要素に結合します。各シーケンスをマージすることによって形成されるタプル、新しいシーケンスの長さ。新しいシーケンスは、パラメータ内の最も短いシーケンスに基づくものとします。さらに、(*) 演算子を zip 関数と組み合わせると、zip の逆の機能、つまりマージされたシーケンスを複数のタプルに分割することができます。

①新しいタプルのシーケンス

>>>>x=[1,2,3],y=['a','b','c']

>>>>zip(x,y)

[(1,'a'),(2,'b'),(3,'c')]

②新しいシーケンスの長さは、パラメータの中で最も短いシーケンスに基づきます。

> >> >x=[1,2],y=['a','b','c']

>>>zip(x,y)

[(1,'a'),(2 ,' b')]

③(*) 演算子を zip 関数と組み合わせると、zip の逆の機能、つまりマージされたシーケンスを複数のタプルに分割することができます。

>>>>x=[1,2,3],y=['a','b','c']

>>>>zip(*zip(x,y))

[ (1,2,3),('a','b','c')]

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。