Python循环对象
Python 编程提供了两种循环,for 循环 和while 循环。将这些循环与诸如 break 和 continue 之类的循环控制语句一起使用,开发有关可迭代对象和迭代器的知识的核心是了解 Python for 循环的工作原理。Python 编程语言提供了三种执行循环的方式来处理循环需求。
什么是循环对象
循环对象是这样一个对象,它包含有一个next()方法(__next__()方法,在python 3x中), 这个方法的目的是进行到下一个结果,而在结束一系列结果之后,举出StopIteration错误。当一个循环结构(比如for)调用循环对象时,它就会每次循环的时候调用next()方法,直到StopIteration出现,for循环接收到,就知道循环已经结束,停止调用next()。
marks = [65, 71, 68, 74, 61]
# convert list to iterator
iterator_marks = iter(marks)
# the next element is the first element
marks_1 = next(iterator_marks)
print(marks_1)
# find the next element which is the second element
marks_2 = next(iterator_marks)
print(marks_2)
输出
# Output: 65 # 71
迭代器
迭代器是可以迭代的对象。迭代器在 Python 中无处不在。它们在for循环、理解、生成器等中优雅地实现,但隐藏在显眼的地方。Python 中的迭代器只是一个可以迭代的对象。一个将返回数据的对象,一次一个元素。可参考Python条件控制
从技术上讲,一个 Python迭代器对象必须实现两个特殊的方法,iter()和next(),统称为迭代器协议。如果我们可以从中获取迭代器,则该对象称为可迭代对象。Python 中的大多数内置容器,如:list、tuple、string等都是可迭代的。
示例:
class PrintNumber:
def __init__(self, max):
self.max = max
def __iter__(self):
self.num = 0
return self
def __next__(self):
if(self.num >= self.max):
raise StopIteration
self.num += 1
return self.num
print_num = PrintNumber(3)
print_num_iter = iter(print_num)
print(next(print_num_iter)) # 1
print(next(print_num_iter)) # 2
print(next(print_num_iter)) # 3
# raises StopIteration
print(next(print_num_iter))
生成器
Python生成器是一种创建迭代器的简单方法。我们上面提到的所有工作都是由Python中的生成器自动处理的。简单地说,生成器是一个函数,它返回一个我们可以迭代的对象(迭代器)(一次一个值)。
在Python中创建生成器相当简单。它就像定义一个普通的函数一样简单,但是用一个yield语句而不是一个return语句。如果一个函数包含至少一个yield语句(它可能包含其他yield或多个return语句),它就成为一个生成器函数。双方yield并return会从一个函数返回一定的价值。不同之处在于,当return语句完全终止函数时,yield语句会暂停函数以保存其所有状态,然后在连续调用时从那里继续。
示例:
# A simple generator function
def my_gen():
n = 1
print('This is printed first')
# Generator function contains yield statements
yield n
n += 1
print('This is printed second')
yield n
n += 1
print('This is printed at last')
yield n
# Using for loop
for item in my_gen():
print(item)
总结
以上是晓得博客为你介绍的Python循环对象的全部内容,通过了解迭代器,生成器,可以更深入的理解Python内置函数的循环原理,更好的理解编程。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折