圖片來源:(https://www.sohu.com/a/437800551_120902643)
一種能夠逐一返回成員的物件。可以對其進行 迭代(iteration)
,也就是逐一取出元素
序列(Sequences)
列表(list)
、元組(tuple)
、字串(string)
集合(Sets)
集合(set)
字典(Dictionaries)
字典(dict)
檔案(Files)
檔案物件
# 列表
numbers = [1, 2, 3, 4, 5]
for num in numbers:
print(num)
# 輸出
1
2
3
4
5
# 元組
fruits = ("apple", "banana", "cherry")
for fruit in fruits:
print(fruit)
# 輸出
apple
banana
cherry
# 字串
text = "hello, world!"
for char in text:
print(char)
# 輸出
h
e
l
l
o
,
w
o
r
l
d
!
# 字典(迭代鍵)
person = {"name": "Alice", "age": 30}
for key in person:
print(key, person[key])
# 輸出
name Alice
age 30
# 集合
my_set = {1, 2, 3, 2}
for item in my_set:
print(item)
# 輸出
1
2
3
# 檔案
with open("my_file.txt", "r") as file:
for line in file:
print(line)
簡化迴圈
: 可使用 for 迴圈直接遍歷可疊代物件的元素通用性
: 許多內建函數和第三方庫都接受可疊代物件作為參數,例如:sum()
、max()
、list()
彈性
: 可以自定義可疊代物件,實現複雜的迭代邏輯使用 for 迴圈
:如果可以成功使用 for 迴圈遍歷,該物件是可疊代的使用iter()函數
:如果 iter(obj)
不引發異常,則 obj
是可疊代的從集合中逐一取得元素物件
iter()函數
:可以將可疊代物件轉換為迭代器next()函數
:用於獲取迭代器的下一個元素# 列表(list)
my_list = [1, 2, 3, 4, 5]
for item in my_list:
print(item)
# 字串(string)
my_string = "Hello, world!"
for char in my_string:
print(char)
# 字典(dict)
my_dict = {'name': 'Alice', 'age': 30}
for key in my_dict:
print(key, my_dict[key])
# 自定義可疊代物件
class MyIterable:
def __init__(self, start, end):
self.start = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.start <= self.end:
num = self.start
self.start += 1
return num
else:
raise StopIteration
my_iterable = MyIterable(1, 5)
for num in my_iterable:
print(num)
可疊代物件是 Python 程式設計中非常重要的概念
理解可疊代物件、迭代器和產生器,可以幫助更有效地處理數據
自定義可疊代物件可以實現複雜的迭代邏輯