皆さんこんにちは、私はGo上級者です。リストまたはタプルが指定された場合、そのリストまたはタプルは for ループを介して走査できます。この走査は反復と呼ばれます。
#Python では、反復は次のように行われます。 ... が実行され、C や Java などの多くの言語では、リストの反復処理は添え字によって実行されます。
#たとえば、Java コード: #
for (i=0; i<list.length; i++) { n = list[i]; }
Python の for ループはリストやタプルだけでなく他の反復可能オブジェクトに対しても使用できるため、Python の for ループの抽象化レベルは Java の for ループよりも高いことがわかります。オブジェクト。
データ型リストには添字がありますが、他の多くのデータ型には添字がありません。ただし、反復可能なオブジェクトである限り、オブジェクトの有無に関係なく反復できます。
たとえば、dict は反復処理できます。
d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
print(key)
注:
因为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)
所以,当使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而不太关心该对象究竟是list还是其他数据类型。
那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
from collections import Iterable print(isinstance('abc', Iterable)) # str是否可迭代True print(isinstance([1, 2, 3], Iterable)) # list是否可迭代True print(isinstance(123, Iterable) ) # 整数是否可迭代False
如果要对list实现类似Java那样的下标循环怎么办?
Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
for i, value in enumerate(['A', 'B', 'C']): print(i, value)
上面的for循环里,同时引用了两个变量,在Python里是很常见的,
比如下面的代码:
for x, y in [(1, 1), (2, 4), (3, 9)]: print(x, y)
了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。
首先,看看 dict 对象的 items() 方法返回的值:
d = {'Adam': 95, 'Lisa': 85, 'Bart': 59} print(d.items())
可以看到,items() 方法把dict对象转换成了包含tuple的list,对这个list进行迭代,可以同时获得key和value:
for key, value in d.items(): print( key, ':', value)
注:
和values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple。
所以, iteritems() 不占用额外的内存。
この記事は Python の基本に基づいており、Python の使用方法を紹介します。 Python の反復。 for ループでは、カスタム データ型を含む任意の反復可能なオブジェクトを使用できます。反復条件が満たされている限り、for ループを使用できます。ケース分析を通じて、2 つの一般的な反復方法が紹介されます。実際の業務で遭遇する困難に対して効果的な解決策を提供します。
以上がPython の反復知識を理解するのに役立つ記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。