欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python的可迭代對象與不可迭代對象詳解

 更新時間:2025年07月18日 09:39:30   作者:Tipriest_  
Python中可迭代對象需實現(xiàn)__iter__或__getitem__,如列表、字符串、字典等;不可迭代對象如整數(shù)、浮點數(shù)等,可用iter()或isinstance()判斷,迭代器需實現(xiàn)__next__,可由可迭代對象轉(zhuǎn)換

在Python中,可迭代對象(Iterable) 是指可以被遍歷(例如用 for 循環(huán)逐項訪問)的對象,而 不可迭代對象(Non-Iterable) 無法直接遍歷。以下是詳細分類和示例:

一、可迭代對象(Iterable)

可迭代對象需要實現(xiàn) __iter__() 方法,或支持通過索引訪問的 __getitem__() 方法。常見類型包括:

1.基礎(chǔ)容器類型

  • 列表(list):[1, 2, 3]
  • 元組(tuple):(1, 2, 3)
  • 字符串(str):"hello"
  • 字典(dict):{"a": 1, "b": 2}(遍歷鍵)
  • 集合(set):{1, 2, 3}

2.文件對象

打開的文件(TextIO):逐行遍歷內(nèi)容。

with open("file.txt") as f:
    for line in f:  # 逐行讀取
        print(line)

3.生成器(Generator)

生成器函數(shù)(使用 yield):

def count(n):
    i = 0
    while i < n:
        yield i
        i += 1

for num in count(5):
    print(num)  # 輸出 0,1,2,3,4

生成器表達式

squares = (x**2 for x in range(5))  # 可迭代

4.其他可迭代對象

  • range 對象:range(5)
  • 枚舉對象(enumerate):enumerate(["a", "b"])
  • zip 對象:zip([1,2], [3,4])
  • 自定義可迭代類(需實現(xiàn) __iter__()__getitem__()):
class MyIterable:
    def __iter__(self):
        return iter([1, 2, 3])

for item in MyIterable():
    print(item)  # 輸出 1,2,3

二、不可迭代對象(Non-Iterable)

不可迭代對象通常是簡單數(shù)據(jù)類型或未實現(xiàn)迭代協(xié)議的對象。例如:

1.基本數(shù)據(jù)類型

  • 整數(shù)(int):5
  • 浮點數(shù)(float):3.14
  • 布爾值(bool):True(雖然 boolint 的子類,但不可迭代)
  • NoneNone

2.函數(shù)、模塊等

  • 函數(shù)對象def f(): passf 不可迭代
  • 模塊import mathmath 不可迭代
  • 類對象:直接遍歷類會報錯(除非實現(xiàn) __iter__)。

三、如何判斷對象是否可迭代?

方法 1:嘗試用iter()函數(shù)

如果對象不可迭代,會拋出 TypeError

obj = 123
try:
    iter(obj)  # 觸發(fā) TypeError
except TypeError:
    print("不可迭代")

方法 2:使用isinstance()和Iterable

更規(guī)范的檢測方式:

from collections.abc import Iterable

print(isinstance([1,2,3], Iterable))  # True
print(isinstance(123, Iterable))      # False

四、易混淆點:可迭代對象 vs 迭代器

  • 可迭代對象(Iterable):可以被遍歷(如列表、字符串)。
  • 迭代器(Iterator):必須實現(xiàn) __next__() 方法,用于逐個返回元素(如生成器)。

轉(zhuǎn)換關(guān)系

  • 可迭代對象 → 迭代器:通過 iter() 轉(zhuǎn)換。
my_list = [1, 2, 3]
iterator = iter(my_list)  # 轉(zhuǎn)為迭代器
print(next(iterator))      # 輸出 1

五、示例代碼

可迭代對象遍歷

# 遍歷字典的鍵值對
d = {"a": 1, "b": 2}
for key, value in d.items():
    print(key, value)

不可迭代對象錯誤

num = 100
for x in num:  # 觸發(fā) TypeError: 'int' is not iterable
    print(x)

總結(jié)

類型可迭代示例
列表、元組、字符串??[1, 2], "abc"
字典、集合??{"a": 1}, {1, 2}
生成器、文件對象??(x for x in range(3))
整數(shù)、浮點、None?123, 3.14, None

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python的MongoDB模塊PyMongo操作方法集錦

    Python的MongoDB模塊PyMongo操作方法集錦

    這篇文章主要介紹了Python的MongoDB模塊PyMongo操作方法集錦,包括數(shù)據(jù)的增刪查改以及索引等相關(guān)的基本操作,需要的朋友可以參考下
    2016-01-01
  • Tensorflow中的降維函數(shù)tf.reduce_*使用總結(jié)

    Tensorflow中的降維函數(shù)tf.reduce_*使用總結(jié)

    這篇文章主要介紹了Tensorflow中的降維函數(shù)tf.reduce_*使用總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 利用python代碼管理Word文檔屬性信息

    利用python代碼管理Word文檔屬性信息

    在Word文檔管理中,文檔屬性包含與文檔有關(guān)的關(guān)鍵信息,如標題、作者、創(chuàng)建日期等,是進行文檔管理的重要工具,本文將展示如何利用Python代碼來靈活操控Word文檔的屬性信息,從而滿足個性化與批量化文檔處理的需求,需要的朋友可以參考下
    2024-05-05
  • opencv 形態(tài)學變換(開運算,閉運算,梯度運算)

    opencv 形態(tài)學變換(開運算,閉運算,梯度運算)

    這篇文章主要介紹了opencv 形態(tài)學變換(開運算,閉運算,梯度運算),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Pytho樹的直徑的計算實現(xiàn)

    Pytho樹的直徑的計算實現(xiàn)

    樹的直徑是樹中任意兩個節(jié)點之間最長路徑的長度,本文主要介紹了Pytho樹的直徑的計算實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Python?httpstat命令行工具功能使用探索

    Python?httpstat命令行工具功能使用探索

    Python?httpstat是一個強大的命令行工具,用于深入了解HTTP請求的性能和狀態(tài)信息,本文將介紹Python?httpstat的基本用法、功能特性、示例代碼以及實際應(yīng)用場景,幫助大家更好地理解和利用這個有用的工具
    2024-01-01
  • Django框架模板注入操作示例【變量傳遞到模板】

    Django框架模板注入操作示例【變量傳遞到模板】

    這篇文章主要介紹了Django框架模板注入操作,結(jié)合實例形式分析了Django框架變量傳遞到模板簡單操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python中有幾個關(guān)鍵字

    Python中有幾個關(guān)鍵字

    在本篇文章里小編給大家分享的是一篇關(guān)于Python中關(guān)鍵字個數(shù)的相關(guān)知識點內(nèi)容,需要的朋友們可以學習下。
    2020-06-06
  • django使用haystack調(diào)用Elasticsearch實現(xiàn)索引搜索

    django使用haystack調(diào)用Elasticsearch實現(xiàn)索引搜索

    這篇文章主要介紹了django使用haystack調(diào)用Elasticsearch實現(xiàn)索引搜索,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python連接到PostgreSQL數(shù)據(jù)庫的方法詳解

    Python連接到PostgreSQL數(shù)據(jù)庫的方法詳解

    顧名思義,PostgreSQL?是一款為高效管理數(shù)據(jù)庫系統(tǒng)而創(chuàng)建的?SQL?系統(tǒng)軟件,這篇文章主要為大家詳細介紹了創(chuàng)建與?PostgreSQL?上的數(shù)據(jù)庫的連接的過程,需要的小伙伴可以了解下
    2023-10-10

最新評論