1. Iterable可迭代类型
在Python中,可迭代类型(iterable types)指的是可以使用迭代器(iterator)进行遍历的数据类型。常见的可迭代类型包括:
-
容器序列(Container Sequences):
- list(列表)
- tuple(元组)
- collections.deque
-
扁平序列(Flat Sequences):
- str(字符串)
- bytes(字节)
- bytearray
- memoryview
- array.array
-
其他内置可迭代类型:
- dict(字典)
- set(集合)
- frozenset
- enumerate(枚举对象)
- filter(过滤器)
- map(映射)
- zip(压缩)
此外,用户自定义的类可以通过实现特定的方法(__iter__()
方法)使其变成可迭代类型。一旦对象是可迭代的,就可以使用 for
循环或者 iter()
函数来获取一个迭代器,并使用 next()
函数逐个访问其元素。
要注意的是,虽然大部分内置类型都是可迭代的,但并不是所有对象都是可迭代的。如果一个对象没有实现 __iter__()
方法,则尝试对其进行迭代时会引发 TypeError
异常。
2. for两种常见形式
在Python中,for
循环有两种常见形式:一种是基于可迭代对象的迭代,另一种是基于计数器的迭代。
1. 基于可迭代对象的迭代
这种形式是最常见的 for
循环用法,用于遍历可迭代对象(如列表、元组、字典、集合等)中的元素。在这种形式中,for
循环会依次取出可迭代对象中的每一个元素,并将其赋值给指定的变量(如 element
, char
, key
, num
等),然后执行循环体中的操作。
2. 基于计数器的迭代
有时候,我们需要根据索引或者计数器的值来遍历序列或进行重复操作。这时可以使用 range()
函数或类似功能来生成一个整数序列,然后通过索引访问序列中的元素。在基于计数器的迭代中,常用的方式包括直接使用 range()
函数生成整数序列来控制循环的次数或者步长。此外,enumerate()
函数可以方便地同时获取索引和元素值。这两种形式的 for
循环在Python中非常常见,可根据不同的需求选择合适的形式来进行迭代操作。