本文为学习廖雪峰python3教程,迭代章节笔记。
在python中,迭代是通过for ... in 来实现的。所以,当我们使用 for 循环是,只要作用于一个可迭代对象,for 循环就可以正常运行,而我们不用关心对象本身的数据类型。
如何判断一个对象是可迭代对象呢?python 中的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 函数可以把一个 list 变成索引-元素对,这样就可以在 for 循环中同时迭代索引和元素本身:
>>> for i, value in enumerate(['A', 'B', 'C']):
... print(i, value)
...
0 A
1 B
2 C
迭代举例:
请使用迭代查找一个list中最小和最大值,并返回一个tuple:
# -*- coding: utf-8 -*-
def findMinAndMax(L):
if len(L) == 0:
return (None, None)
elif len(L) == 1:
return (L[0], L[0])
else:
m = L[0]
n = L[1]
for i in L:
if i<m:
m = i
if i>n:
n = i
return (m,n)
def main()
if findMinAndMax([]) != (None, None):
print('测试失败!')
elif findMinAndMax([7]) != (7, 7):
print('测试失败!')
elif findMinAndMax([7, 1]) != (1, 7):
print('测试失败!')
elif findMinAndMax([7, 1, 3, 9, 5]) != (1, 9):
print('测试失败!')
else:
print('测试成功!')
if __name__ == '__main__':
main()