5.5. 生成器推导式

生成器推导式即是 生成器,和列表推导式一样,列表是[],生成器是()

5.5.1. 代码示例1

 number_thing = (number for number in range(1,6))
 number_thing
 <generator object <genexpr> at 0x00000279D55ADE60>

number_thing = (number for number in range(1,6))
list(number_thing)
[1, 2, 3, 4, 5]
list(number_thing)  #再次查看已经为空,说明生成器已经为空
[]

 for i in number_thing:
   ....:     print(i)
   ....:
1
2
3
4
In [29]: for i in number_thing:
   ....:     pirnt(i)
   ....:
#再次迭代,值已经为空,因为生成器只能运行一次

5.5.2. 代码示例2

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2020/3/3 14:39
# filename: 生成器推导式01.py
f = open("data.txt")

lines = (t.strip() for t in f)  # 读取行,删除前后空白
# comments = (t for t in lines if t[0] == "#")
comments = (t for t in lines if t[0] != "#")  # 读取生成器内容去掉#号内容
# print(list(comments))
for comment in comments:
    print(comment)