列表生成式:
>>> a = [i+1 for i in range(10)]
>>>a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
生成器和迭代器部分:
使用isinstance()
判断一个对象是否是Iterable
对象:
from collections import Iterable str1 = 'hello' #字符串为可迭代对象 print(isinstance(str1,Iterable)) li = ["alex","野模"] #列表为可迭代对象 print(isinstance(li,Iterable)) num = 2018 print(isinstance(num,Iterable)) 计算结果: True True False
凡是可作用于for
循环的对象都是Iterable
类型;凡是可作用于next()
函数的对象都是Iterator
类型,它们表示一个惰性计算的序列;
只要是生成器,那就一定是迭代器。但迭代器不一定都是生成器。
使用iter()函数可以将list、dict、str等变成迭代器
迭代器的缺点:
iterrator的计算是惰性的,只有通过next函数在需要返回下一个数据时才会计算
迭代器一次性的,只能往后走,不能往前退