亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python的可迭代對(duì)象與不可迭代對(duì)象詳解

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

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

一、可迭代對(duì)象(Iterable)

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

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

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

2.文件對(duì)象

打開的文件(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

生成器表達(dá)式

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

4.其他可迭代對(duì)象

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

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

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

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

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

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

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

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

三、如何判斷對(duì)象是否可迭代?

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

如果對(duì)象不可迭代,會(huì)拋出 TypeError

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

方法 2:使用isinstance()和Iterable

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

from collections.abc import Iterable

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

四、易混淆點(diǎn):可迭代對(duì)象 vs 迭代器

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

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

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

五、示例代碼

可迭代對(duì)象遍歷

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

不可迭代對(duì)象錯(cuò)誤

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

總結(jié)

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

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

相關(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é),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 利用python代碼管理Word文檔屬性信息

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

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

    opencv 形態(tài)學(xué)變換(開運(yùn)算,閉運(yùn)算,梯度運(yùn)算)

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

    Pytho樹的直徑的計(jì)算實(shí)現(xiàn)

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論