详解python中的迭代
发布时间:2025-09-21 14:20:22

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,我们称之为迭代(Iteration)。
在Python中,通过for进行迭代 ... In完成,C语言、迭代list等多种语言都是通过下标完成的,如Java代码:
for(i=0;i<list.length;i++){
n=list[i];
}可以看出,Python的for循环比C的for循环更抽象,因为Python的for循环不仅可以用于list或tuple,还可以用于其他可迭代对象。
虽然list的数据类型已经下标,但许多其他数据类型并没有下标。然而,只要它是一个可迭代的对象,无论是否下标,它都可以迭代,例如dict:
>>>d={'a':1,'b':2,'c':3}
>>>forkeyind:
...print(key)
...
a
c
b由于dict的存储不按list的顺序排列,因此迭代的结果顺序可能会有所不同。
默认情况下,dict迭代key。如果要迭代value,可以使用forr value in d.values(),如果要同时迭代key和value,可以使用forr k, v in d.items()。
因为字符串也是可迭代的对象,所以也可以作用于for循环:
>>>forchin'ABC': ...print(ch) ... A B C
因此,当我们使用for循环时,for循环可以正常运行,只要它作用于可迭代对象,我们不太关心对象是列表还是其他数据类型。
那么,如何判断一个对象是可迭代的对象呢?方法是通过iterable类型来判断collections模块:
>>>fromcollectionsimportIterable
>>>isinstance('abc',Iterable)#str是否可迭代
True
>>>isinstance(1,2,3),Iterable)#list是否可迭代
True
>>>isinstance(123,Iterable)#整数是否可迭代
False最后一个小问题,如果要像Java一样实现list的下标循环怎么办?Python内置的enumerate函数可以将list变成索引-元素对,使索引和元素本身可以在for循环中同时迭代:
>>>fori,valueinenumerate(['A','B','C']): ...print(i,value) ... 0A 1B 2C
在上述for循环中,同时引用了两个变量,这在Python中很常见,例如以下代码:
下一篇 python怎么存储数据
