Home > Article > Backend Development > An article to help you understand Python’s iteration knowledge
Hello everyone, I am a Go advanced person. If a list or tuple is given, the list or tuple can be traversed through a for loop. This traversal is called iteration.
#In Python, iteration is through for ... in is done, and in many languages such as C or Java, iterating over the list is done through subscripts.
For example, Java code:
for (i=0; i<list.length; i++) { n = list[i]; }
Note:
It can be seen that the abstraction level of Python's for loop is higher than that of Java's for loop, because Python's for loop can not only be used on lists or tuples, but also on other iterable objects.
Although the data type list has subscripts, many other data types do not have subscripts. However, as long as it is an iterable object, it can be iterated regardless of whether there is a subscript.
For example, dict can be iterated.
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() 不占用额外的内存。
This article is based on the basics of Python and introduces the use of Python iteration. Any iterable object can be used in a for loop, including custom data types. As long as the iteration conditions are met, a for loop can be used. Through case analysis, two common iteration methods are introduced. Provide effective solutions to the difficulties encountered in actual operations.
The above is the detailed content of An article to help you understand Python’s iteration knowledge. For more information, please follow other related articles on the PHP Chinese website!