#本来这里应该讲生成器与迭代器,但为了更好地理解之后的内容,在这里先说一下列表生成器
#还记得第五章第八节简单推导的内容吗
print(
[x*x for x in range(10) if not x%3==0]
)
#[1, 4, 16, 25, 49, 64]
#列表生成器可以快速生成一个经过算法处理过的列表
#并且这个循环可以是多层的
print(
[a+b for a in "ABC" for b in "123"]
)
#['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
#循环层数没有上限,但一般不会超过三层
#面对字典时也是这样
y={"bob":"friend","lily":"unknow","hermione":"girlfriend"}
print(
[c+":"+d for c,d in y.items()]
)
#['bob:friend', 'lily:unknow', 'hermione:girlfriend']
#再来一个if else的例子,在列表生成器和推导中都可以使用
#但要注意,对for来说,if else需要在前面,否则会报错
print(
[z*z if z%3==0 else -z*z for z in range(10)]
)
#[0, -1, -4, 9, -16, -25, 36, -49, -64, 81]