在Python中,可迭代对象是指实现了__iter__()
方法的对象,它可以通过调用iter()
函数返回一个迭代器对象。可迭代对象可以是容器对象(如列表、元组、集合、字典等),也可以是自定义的对象。
以下是一些常见的可迭代对象的示例:
列表(List):列表是最常见的可迭代对象之一,它可以通过for
循环遍历其中的元素。
my_list = [1, 2, 3, 4, 5]
for item in my_list:
print(item)
元组(Tuple):元组也是可迭代对象,它可以通过for
循环遍历其中的元素。
my_tuple = (1, 2, 3, 4, 5)
for item in my_tuple:
print(item)
字符串(String):字符串是由字符组成的序列,因此它也是可迭代对象。
my_string = "Hello"
for char in my_string:
print(char)
集合(Set):集合是一组唯一的元素的无序集合,它也是可迭代对象。
my_set = {1, 2, 3, 4, 5}
for item in my_set:
print(item)
字典(Dictionary):字典是由键值对组成的无序集合,它的可迭代对象是字典的键。
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict:
print(key)
除了以上内置的可迭代对象外,我们还可以自定义可迭代对象。要实现一个可迭代对象,只需在对象中定义__iter__()
方法,并在该方法中返回一个迭代器对象。通过这种方式,我们可以使用for
循环等迭代方式遍历自定义对象中的元素。
# 迭代器对象
class ItRange():
def __init__(self,num):
self.num = num
self.counter = -1 # 注意,counter是从-1开始的,所以第一次调用__next__函数,会返回0
def __iter__(self):
return self
def __next__(self):
self.counter += 1
if self.counter == self.num: # 如果迭代次数超过num,则触发异常StopIteration,停止迭代,并返回属性counter
raise StopIteration()
return self.counter
# 可迭代对象
class XRange():
def __init__(self,max_num):
self.max_num = max_num
def __iter__(self):
return ItRange(self.max_num)
print(list(XRange(10))) # 你可以看到输出的最终结果就是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
obj1 = XRange(10)
# 在此时,首先是调用了XRange的__iter__方法,返回了一个迭代器,
# 然后逐次调用迭代器的__next__方法,形成每一个值
for item in obj1:
print(item)
参考:
理解python中的迭代器对象、可迭代对象、生成器对象_range函数中的迭代器对象是什么意思_helloworld987456的博客-CSDN博客