python 生成器yield 和 迭代器iter next 示例
Posted _刘文凯_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 生成器yield 和 迭代器iter next 示例相关的知识,希望对你有一定的参考价值。
python 生成器yield 和 迭代器iter next 示例
使用生成器和迭代器的好处是可以节省内存等。
生成器
生成器的示例:
def yield_func(num):
while num < 10:
yield num ## 函数运行到这里会暂停
num = num + 1
return
if __name__ == '__main__':
num = 1
yield_f = yield_func(num)
while True:
next_ = input('>>')
if next_ == 'next':
print(next(yield_f)) ## 对应的第3行,会继续执行一次
运行结果:
迭代器
最简单的迭代器:
一般形式:
num = [1,2,3]
num_iter = iter(num)
for i in range(3):
print(next(num_iter))
numpy:
import numpy as np
num = [1,2,3]
num = np.array(num)
num_iter = iter(num)
for i in range(3):
print(next(num_iter))
pandas有些不同:
import pandas as pd
num = [1,2,3]
num = pd.DataFrame(num)
num_iter = iter(num)
for i in num.itertuples():
print(i[1])
以上输出结果均为:
自己创建一个可以用于迭代器的类:
class myiter:
def __init__(self, num):
self.num = num
def __iter__(self):
self.next_num = self.num
return self # 固定写法
def __next__(self):
if self.next_num <= 10:
x = self.next_num
self.next_num += 1
return x
else:
raise StopIteration
if __name__ == '__main__':
num = 1
my_next = myiter(num)
my_iter = iter(my_next) # 声明为迭代器
for x in my_iter: # 自动调用next函数
print(x)
print('------------')
# ------------------------- #
num = 1
my_next = myiter(num)
my_iter = iter(my_next) # 声明为迭代器
for i in range(10):
print(next(my_iter))
结果:
以上是关于python 生成器yield 和 迭代器iter next 示例的主要内容,如果未能解决你的问题,请参考以下文章
python-迭代器(next(),iter()函数)和生成器(yield函数)
python 生成器yield 和 迭代器iter next 示例
python 生成器yield 和 迭代器iter next 示例
Python全栈之路8--迭代器(iter)和生成器(yield)