안녕하세요 여러분, 저는 바둑 고수입니다. 리스트나 튜플이 주어지면 for 루프를 통해 리스트나 튜플을 순회할 수 있습니다. 이 순회를 반복이라고 합니다.
Python에서는 for...in을 통해 반복이 이루어지지만, C나 Java 등 많은 언어에서는 목록의 반복이 첨자를 통해 이루어집니다.
예를 들어, Java 코드:
for (i=0; i<list.length; i++) { n = list[i]; }
참고:
Python의 for 루프보다 추상화 수준이 Java의 for 루프보다 높다는 것을 알 수 있습니다. 루프는 리스트나 튜플뿐만 아니라 다른 반복 가능한 객체에도 사용할 수 있습니다.
데이터 유형 목록에는 첨자가 있지만 다른 많은 데이터 유형에는 첨자가 없습니다. 그러나 반복 가능한 객체인 한 첨자가 있는지 여부에 관계없이 반복될 수 있습니다. 반복하다.
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 반복의 사용법을 소개합니다. 사용자 정의 데이터 유형을 포함하여 반복 가능한 모든 객체를 for 루프에서 사용할 수 있습니다. 반복 조건이 충족되는 한 for 루프를 사용할 수 있습니다. 사례 분석을 통해 두 가지 일반적인 반복 방법이 소개됩니다. 실제 운영에서 직면하는 어려움에 대한 효과적인 솔루션을 제공합니다.
위 내용은 Python의 반복 지식을 이해하는 데 도움이 되는 기사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!