欢迎访问宙启技术站
智能推送

在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