python生成器和迭代器
时间: 2023-08-30 13:10:32 浏览: 114
Python中的生成器和迭代器都是用于处理大量数据或者无限序列的工具,但是它们在实现方式和使用方法上有所不同。
生成器是一种特殊的函数,它能够暂停执行并保存当前的状态,然后在需要时恢复执行。这样可以避免创建大量的数据对象,从而节省内存空间。生成器可以通过yield语句来实现,每次执行到yield语句时,函数会返回一个值,并暂停执行,等待下一次调用时恢复执行。例如:
```python
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
print(next(gen)) # 1
print(next(gen)) # 2
print(next(gen)) # 3
```
迭代器是一种对象,它能够遍历一个序列,并且支持一些特定的操作,比如获取下一个元素。Python中的列表、元组、字典等数据类型都是可迭代的对象。可以通过调用iter函数来获取一个迭代器对象,然后使用next函数来获取下一个元素,直到迭代结束。例如:
```python
my_list = [1, 2, 3]
my_iterator = iter(my_list)
print(next(my_iterator)) # 1
print(next(my_iterator)) # 2
print(next(my_iterator)) # 3
```
需要注意的是,迭代器只能遍历一次,遍历结束后就不能再次使用。如果需要多次遍历,可以重新获取迭代器对象。另外,可以使用for循环来遍历可迭代对象,for循环会自动调用iter函数获取迭代器对象,并使用next函数遍历序列。例如:
```python
my_list = [1, 2, 3]
for item in my_list:
print(item)
```
这样就可以遍历my_list中的所有元素。
阅读全文