知行编程网知行编程网  2022-12-18 12:00 知行编程网 隐藏边栏  10 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于详解python中的迭代的相关知识,包括python 迭代对象,以及python输出列表中最大的数这些编程知识,希望对大家有参考作用。

python中迭代详解

如果给定一个列表或元组,我们可以通过一个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中是很常见的,比如下面的代码:

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享