# 列表生成式
lists = [x * x for x in range(1, 11)]
print(lists)
# 列表生成式2
lists2 = [x * x for x in range(1, 11) if x % 2 == 0]
print(lists2)
# 列表生成式3
lists3 = [x + y + z for x in '1234' for y in '1234' for z in '1234' if x != y != z]
print(lists3)
# 生成器:一边循环一边计算的机制generator
# 第一种暴力方法
lists4 = (x for x in range(1, 11) if x % 2 == 0)
print(next(lists4)) # 输出用next
for i in lists4: # 输出用循环
print(i)
# 可迭代对象:
# 可用于for循环的数据类型有以下几种,他们统称为可迭代对象(iterable):
# 首先是集合数据类型,如:list、tuple、dict、set、str
# 其次是generaor,包括生成器和带yield的generator function
# 使用isinstance()判断是否是iterable
# from collections import iterable
# isinstance([], iterable)
# 迭代器:
# 不仅可以使用for循环,还可以使用 next()调用,叫做迭代器:iterator
# 使用isinstance()判断是否是iterator
# form collections import iterator
# isinstance([],iterator)
# list、dict 虽然是iterable(可迭代对象,可for循环),但是不属于iterator(迭代器)
# 利用iter()函数将其变为iterator
关于这一模块,要通过例子不断深化,不然很难理解