一、判断一个对象是否支持迭代
from collections import Iterable
isinstance("ABC",Iterable)
二、将list变成索引-元素对的形式循环遍历
for i,value in enumerate(['A','B','C']):
print(i,value)
三、使用for循环同时迭代两个变量
for i,v in [(1,2),(3,4),(5,6)]:
print(i,v)
四、列表生成器简介
列表生成器是一种快速的生成列表的方法
list(range(1,100))
[x * x for x in range(1,100)]
[x * x for x in range(1,100) if x%2 == 0]
[n + m for n in "ABC" for n in "DEF"]
[k+v for k,v in d.items()] #其中d为dict
[s.lower() for s in list ] #将原有的lsit中的元素变成小写的
五、生成器介绍
生成器是根据特定的算法或者公式推测出来的,通过生成器可以解决在内存有限的情况下获取特定元素的值
六、创建生成器
g = (x*x for x in [1,2,3,4,5])
def number():
n = 1
while True:
yield n
n += 2
g = number()
yield是一个关键字,如果一个函数中存在yield关键字,那么该函数将变成一个迭代器
当程序每次执行的yield时,将返回相应的数值并中断本次执行并保存当前执行的变量、位置、状态,再次调用时将直接执行下一条语句
next(生成器) 将使生成器生成下一个值
七、迭代器
凡是可以使用for循环进行遍历的对象都是Iterable类型
凡是可以作用于next()函数对象的都是Iterator类型
凡是生成器都是Iterator类型
集合数据类型如lsit、dict、str等都是Iterable的但并不是Iterator,但可以通过使用iter()来获得一个Iterator对象,例如:isinstance(iter("ABC"),Iterator)