Python3 迭代 Iteration

本文为学习廖雪峰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 in:
                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()  

你可能感兴趣的:(Python3 迭代 Iteration)