Myself
  • 1.Python历史
  • 2.安装Python
    • 2.1.Python解释器
  • 3.第一个Python程序
    • 3.1.使用文本编辑器
    • 3.2.输入和输出
  • 4.Python基础
    • 4.1.数据类型和变量
    • 4.2.字符串和编码
    • 4.3.使用list和tuple
    • 4.4.条件判断
    • 4.5.模式匹配
    • 4.6.循环
    • 4.7.使用dict和set
  • 5.函数
    • 5.1.调用函数
    • 5.2.定义函数
    • 5.3.函数的参数
    • 5.4.递归函数
  • 6.高级特性
    • 6.1.切片
    • 6.2.迭代
    • 6.3.列表生成式
    • 6.4.生成器
    • 6.5.迭代器
  • 7.函数式编程
    • 7.1.高阶函数
      • 7.1.1.map/reduce
      • 7.1.2.filter
      • 7.1.3.sorted
    • 7.2.返回函数
    • 7.3.匿名函数
    • 7.4.装饰器
    • 7.5.偏函数
  • 8.模块
    • 8.1.使用模块
    • 8.2.安装第三方模块

搜索结果

没有相关内容~~

6.2.迭代

最新修改于 2025-08-07 16:59
如果给定一个 `list`或 `tuple`,我们可以通过 `for`循环来遍历这个 `list`或 `tuple`,这种遍历我们称为迭代(Iteration)。 在Python中,迭代是通过 `for ... in`来完成的,而很多语言比如C语言,迭代 `list`是通过下标完成的,比如C代码: ```python for (i=0; i> d = {'a': 1, 'b': 2, 'c': 3} >>> for key in d: ... print(key) ... a c b ``` []( "复制到剪贴板") 因为 `dict`的存储不是按照 `list`的方式顺序排列,所以,迭代出的结果顺序很可能不一样。 默认情况下,`dict`迭代的是key。如果要迭代value,可以用 `for value in d.values()`,如果要同时迭代key和value,可以用 `for k, v in d.items()`。 由于字符串也是可迭代对象,因此,也可以作用于 `for`循环: ```plain >>> for ch in 'ABC': ... print(ch) ... A B C ``` []( "复制到剪贴板") 所以,当我们使用 `for`循环时,只要作用于一个可迭代对象,`for`循环就可以正常运行,而我们不太关心该对象究竟是 `list`还是其他数据类型。 那么,如何判断一个对象是可迭代对象呢?方法是通过 `collections.abc`模块的 `Iterable`类型判断: ```plain >>> from collections.abc import Iterable >>> isinstance('abc', Iterable) # str是否可迭代 True >>> isinstance([1,2,3], Iterable) # list是否可迭代 True >>> isinstance(123, Iterable) # 整数是否可迭代 False ``` []( "复制到剪贴板") 最后一个小问题,如果要对 `list`实现类似Java那样的下标循环怎么办?Python内置的 `enumerate`函数可以把一个 `list`变成索引-元素对,这样就可以在 `for`循环中同时迭代索引和元素本身: ```plain >>> for i, value in enumerate(['A', 'B', 'C']): ... print(i, value) ... 0 A 1 B 2 C ``` []( "复制到剪贴板") 上面的 `for`循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码: ```plain >>> for x, y in [(1, 1), (2, 4), (3, 9)]: ... print(x, y) ... 1 1 2 4 3 9 ``` []( "复制到剪贴板") ### 练习 请使用迭代查找一个list中最小和最大值,并返回一个tuple: ```python def findMinAndMax(L): return (None, None) # 测试 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('测试成功!') ``` []( "复制到剪贴板") ### 参考源码 [do\_iter.py](https://liaoxuefeng.com/books/python/advanced/iterate/do_iter.py) ### 小结 任何可迭代对象都可以作用于 `for`循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用 `for`循环。
开始访问