for
循环的数据类型有如下几种:
list
、
tuple
、
dict
、
set
、
str
等;
generator
,包括生成器和带
yield
的generator function。
for
循环的对象统称为可迭代对象:
Iterable
。
isinstance()
判断一个对象是不是
Utterable
对象。
next()
函数调用并不断返回下一个值的对象称为迭代器:Iterator
。
Iterator
对象,但
list
、
dict
、
str
虽然是
Iterable
,却不是
Iterator
。
list
、
dict
、
str
等
Iterable
变成
Iterator
可使用
iter()
函数:
for
循环的对象都是
Iterable
类型; 凡是可做用于
next()
函数的对象都是
Iterator
类型,它们表示一个惰性计算的序列;
list
、
dict
、
str
等是
Iterable
但不是
Iterator
,不过能够经过
iter()
函数得到一个
Iterator
对象。
for
循环本质上就是经过不断调用
next()
函数实现的
for
循环本质上就是经过不断调用
next()
函数实现的,
对于可迭代对象,for语句能够经过iter()方法获取迭代器,而且经过next()方法得到容器的下一个元素。例如:
for
x
in
[
1
,
2
,
3
,
4
,
5
]:
pass
实际上彻底等价于:python
Foo/
|-- bin/ | |-- foo | |-- foo/ | |-- tests/ | | |-- __init__.py | | |-- test_main.py | | | |-- __init__.py | |-- main.py | |-- docs/ | |-- conf.py | |-- abc.rst | |-- setup.py |-- requirements.txt |-- README
简要解释:算法