12 Python学习之列表推导式和生成器表达式
列表推导式
列表推导式:用一行代码构建一个比较复杂有规律的列表。本质是一个可迭代对象
循环模式:
语法:
[变量 for 变量 in 可迭代对象]
例1:
li = [i for i in range(10)]
print(li)
筛选模式:
语法:
[变量 for 变量 in 可迭代对象 if 条件]
例1:
li = [i for i in range(10) if i % 2 == 0]
print(li)
多层循环嵌套的列表推导式
例1:
找出列表中名字带有两个字母'e'的名字
li = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Steven'], ['Alice', 'Jill', 'Ana', 'Sherry', 'Jennifer']]
print([name for i in li for name in i if name.count('e') == 2])
列表生成器
列表生成器与推导式的写法一样,只是将列表推导式的方括号换成圆括号,本质是一个迭代器
例1:
obj = (i for i in range(1, 11)) # 生成器
print(type(obj))
for _ in range(10):
print(next(obj)) # 输出迭代器中的内容