如果给定一个列表或元组,我们可以通过一个for循环来遍历这个列表或元组,我们称之为迭代(Iteration)。
在Python中,迭代是通过for ... in来完成的,而在C语言等很多语言中,迭代列表是通过下标来完成的,比如Java代码:
for (i=0; i<list.length; i++) {
n = list[i];
}
可以看出Python的for循环比C的for循环更抽象,因为Python的for循环不仅可以用在列表或者元组上,还可以用在其他可迭代对象上。
虽然list这个数据类型有下标,但是很多其他数据类型是没有下标的。但是只要是可迭代对象,不管有没有下标都可以迭代。例如,可以迭代 dict:
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
... print(key)
...
a
c
b
因为dict的存储不是按照list的顺序排列的,所以迭代出来的结果顺序可能不一样。
默认情况下,dict 遍历键。如果要迭代value,可以在d.values()中使用for value,如果要同时迭代key和value,可以在d.items()中使用for k,v。
由于字符串也是可迭代对象,它们也可以用在 for 循环中:
>>> for ch in 'ABC':
... print(ch)
...
A
B
C
因此,我们在使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,并不关心对象是列表还是其他数据类型。
那么,如何判断一个对象是可迭代对象呢?方法根据collections模块的Iterable类型判断:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
最后一个小问题,如果想给list实现一个类似Java的下标循环怎么办? Python 内置的 enumerate 函数可以把一个列表变成一个索引-元素对,这样索引和元素本身就可以在 for 循环中同时迭代:
>>> for i, value in enumerate(['A', 'B', 'C']):
... print(i, value)
...
0 A
1 B
2 C
在上面的for循环中,同时引用了两个变量,这在Python中是很常见的,比如下面的代码:
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何在python中注释多行09/19
- ♥ 如何在python中找到导数10/08
- ♥ 什么是Python中的线程和多线程12/04
- ♥ 7个最佳的学习Python编程的开源库01/14
- ♥ python中如何实现format函数保留指定的小数位数?09/06
- ♥ python中的系列是什么意思08/29
内容反馈