# 小说python何时使用生成器

```import time
import random

def gen_winning_numbers():
random.seed()
elements = []
for i in range (0,10):
time.sleep(1) # 模拟很牛逼的摇号算法但有些费时
elements.append(random.randint(1,10))

return elements

random.seed()
my_number = random.randint(1,10)
print ("my number is " + str(my_number))

for winning_number in gen_winning_numbers():
print(winning_number)
if my_number == winning_number:
print ("you win!")
break```

gen_winning_numbers函数是一个比较耗时的函数，随机产生10个中奖号码，如果my_number在这10个数中，表示中奖且程序退出，从这个实现中可以看到，不管如何至少需要等10s，才知道中奖结果。

```import time
import random

def gen_winning_numbers():
random.seed()
for i in range(0,10):
time.sleep(1)  # 模拟很牛逼的摇号算法但有些耗时
yield random.randint(1,10)

random.seed()
my_number = random.randint(1,10)
print ("my number is " + str(my_number))

for winning_number in gen_winning_numbers():
print(winning_number)
if my_number == winning_number:
print ("you win!")
break```

```def get_elements():
elements = []
for i in range (0,10000):
elements.append("x"*10240)
# 返回1W个每个元素10KB的大列表
return elements

characters_count = 0

my_elements=get_elements()

for i in my_elements:
characters_count = characters_count + len(i)

print(characters_count)```

```def get_elements():
for i in range (0,10000):
yield("x"*10240)

characters_count = 0

my_elements=get_elements()

for i in my_elements:
characters_count = characters_count + len(i)

print(characters_count)```

```import time

def elements():
elements = []
for i in range (0,4):
# 模拟耗时操作
time.sleep(5)
elements.append(i)
return elements

print("start")
print(elements())
print("end")```

```import time

def elements():
elements = []
for i in range (0,4):
# 模拟耗时操作
time.sleep(5)
yield(i)

print("start")
for i in elements():
# 输出一个简易进度
print(".", end="", flush=True)
print()
print("end")```

1. list方法

`mylist = list(my_generator())`

2. 列表生成式

`mylist = [elem for elem in my_generator()]`

24 篇文章25 人订阅

0 条评论

## 相关文章

232100

### 金山WPS，C++研发工程师，一面

【每日一语】人们常常会欺骗你，是为了让你明白，有时候，你唯一应该相信的人就是你自己。——《千与千寻》

9720

11120

43940

14410

29570

16830

50200

23510

### 【生信菜鸟经】如何系统入门Perl

Perl是典型的脚本语言，短小精悍，非常容易上手，尤其适合处理文本，数据，以及系统管理。它在老一辈的生物信息学分析人员中非常流行，出于历史遗留原因大家肯定会或多...

44290