pythonでの反復と反復オブジェクト

2021 ワード

何がpythonの反復ですか?
リストまたはtupleが与えられた場合、私たちはこのlistまたはtupleをforループによって巡回することができます。これは反復と呼ばれます。
(Pythonでは、反復はfor…inによって行われる)
Pythonのforサイクルの抽象度はCのforサイクルより高くなります。Pythonのforサイクルはlistまたはtupleだけでなく、他の反復可能なオブジェクトにも作用します。
(forサイクルに直接作用することができるオブジェクトを総称して、list、tuple、dict、set、strなどの反復可能なオブジェクトと呼ぶ。)
リストというデータタイプは、下付きがありますが、多くの他のデータタイプには下付きがありません。しかし、pythonの反復可能なオブジェクトであれば、下付きがあるかどうかにかかわらず、dictなどの反復ができます。

>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:...   print(key)
...
a
c
b
dictの記憶はlistの順に並べられていないため、反復した結果の順序が異なる可能性が高い。
デフォルトではdict反復はkeyです。もしvalueを繰り返すなら、for value in d.values()を使ってもいいです。keyとvalueを同時に繰り返すなら、for k、v in d.items()を使ってもいいです。
文字列も反復可能なオブジェクトですので、forループにも作用します。

>>> for ch in 'ABC':
...   print(ch)
...ABC
したがって、私たちはforサイクルを使うと、反復可能なオブジェクトに作用すれば、forサイクルは正常に実行できますが、オブジェクトがlistなのか、それとも他のデータタイプなのかはあまり関心がありません。
では、どのようにオブジェクトが反復可能なオブジェクトであるかを判断しますか?方法は、collectionモジュールのIterableタイプによって判断される。

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str     
True
>>> isinstance([1,2,3], Iterable) # list     
True
>>> isinstance(123, Iterable) #        
False
最後の小さな問題は、リストにJavaのような下付きサイクルを実現するにはどうすればいいですか?Pythonに内蔵されているenumerate関数は、リストをインデックス-要素ペアに変えることができます。これにより、forループでインデックスと要素自体を同時に繰り返すことができます。

>>> for i, value in enumerate(['A', 'B', 'C']):
...   print(i, value)
...
0 A
1 B
2 C
上のforサイクルでは、二つの変数を同時に引用しています。Pythonではよく見られます。たとえば、下のコードです。

>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
...   print(x, y)
...
1 1
2 4
3 9
以上はこの文章で述べたすべての内容です。この文章は主にpythonの反復と反復の対象に関する知識を紹介しています。資料を使って上記の内容を理解してほしいです。この文章で述べた内容があなたの役に立つことを望んでいます。pythonをもっと楽に勉強させてください。皆さんの応援に感謝しています。