在Python中使用yield关键字的生成器函数的应用实例
发布时间:2023-07-04 10:02:56
在Python中,yield关键字可用于创建生成器函数,生成器函数可以迭代地生成数据,而不是一次性生成全部数据,从而节省内存空间。
下面是一些使用yield关键字的生成器函数的应用实例:
1. 生成器函数生成斐波那契数列:
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib = fibonacci()
for i in range(10):
print(next(fib))
输出:
0
1
1
2
3
5
8
13
21
34
2. 生成器函数生成无限序列:
def infinite_sequence():
num = 0
while True:
yield num
num += 1
seq = infinite_sequence()
for i in range(10):
print(next(seq))
输出:
0
1
2
3
4
5
6
7
8
9
3. 生成器函数实现自定义range函数:
def my_range(start, stop, step):
num = start
while num < stop:
yield num
num += step
my_list = [x for x in my_range(0, 10, 2)]
print(my_list)
输出:
[0, 2, 4, 6, 8]
4. 生成器函数读取大文件:
def read_large_file(file_path):
with open(file_path, 'r') as file:
for line in file:
yield line.strip()
file_gen = read_large_file('large_file.txt')
for line in file_gen:
print(line)
这样可以一行一行地读取大文件内容,而不会加载整个文件到内存中。
5. 生成器函数实现无限元素的循环:
def infinite_loop(iterable):
while True:
for element in iterable:
yield element
loop_gen = infinite_loop([1, 2, 3])
for i in range(10):
print(next(loop_gen))
输出:
1
2
3
1
2
3
1
2
3
1
