日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Python中比元组更好用的namedtuple

發布時間:2025/3/20 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中比元组更好用的namedtuple 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.什么是元組?

  • 不可變的序列類型
  • “不能修改的列表”

2.元組支持哪些操作?

元組是序列類型,支持序列類型的所有操作

通過索引取值

one_tuple = ("可優", 17, "男", "coding", "Never Stop Learning!") one_tuple[-1]

切片操作

one_tuple = ("可優", 17, "男", "coding", "Never Stop Learning!") one_tuple[3:5]

成員操作(in 或者 not in)

one_tuple = ("可優", 17, "男", "coding", "Never Stop Learning!") "可優" in one_tuple

連接操作(+)

one_tuple = ("可優", 17, "男", "coding", "Never Stop Learning!") two_tuple = ("That is really right!", ) one_tuple + two_tuple

重復操作符(*)

one_tuple = ("可優", 17, "男", "coding", "Never Stop Learning!") one_tuple * 2

遍歷(for)

one_tuple = ("可優", 17, "男", "coding", "Never Stop Learning!") for value in one_tuple:print(value)

求長度(len)

one_tuple = ("可優", 17, "男", "coding", "Never Stop Learning!") len(one_tuple)

其他內置函數(all、any、max、min、list、tuple、enumerate、sorted等)

元組有什么缺點(痛點)?

最大的痛點是只能通過數字索引來取值
當元組中元素非常大時,通過索引取值非常不方便,內存消耗也大

命名元組(namedtuple)

1.定義

使用命名元組的步驟:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' # 將元組封裝為一個類,可以通過字段名(屬性名)來訪問元組中的值 # 支持元組的所有操作 from collections import namedtuple# 1、定義一個類 Love = namedtuple("Love", "name gender age love_into hobby motto")# 2、創建對象 keyou = Love("可優", "帥男", 17, "Lemon little girl", "Coding", "Never Stop Learning!")# 3、獲取命名元組的值 print(keyou[1]) # 支持元組的索引取值 print(keyou[-2:]) # 支持切片 print(keyou.name) # 支持通過字段名來取值

定義命名元組類的三種方法以及rename和defaults參數:

from collections import namedtuple# 1、定義一個類 # 方法一,傳遞屬性名之間以空格間隔的一個字符串 Love = namedtuple("Love", "name gender age love_into hobby motto")# 方法二,也可以以英文逗號來分隔每一個屬性名 Love = namedtuple("Love", "name,gender,age,love_into,hobby,motto")# 方法三,傳遞一個由屬性名組成的序列類型(列表、元組) fields = ["name", "gender", "age", "love_into", "hobby", "motto"] Love = namedtuple("Love", fields)# 說明: # 屬性名要符合標識符的命名規范 # 只能由數字、字母、下劃線組成 # 不能以數字開頭 # 不能與關鍵字、系統函數或類重名 # 如果屬性名,不符合這些規范會報錯嗎? 會報錯 fields = ["1name", "class", "def", "love_into", "hobby", "motto"] Love = namedtuple("Love", fields)# 如果傳了一個不符合規范的屬性名,又不想讓它報錯呢? 可以做到的 # 將rename參數設置為True,當屬性名不符合規范時,會自動幫我們將不符合規范的屬性名改為下劃線加數字索引值 fields = ["1name", "class", "def", "love_into", "hobby", "motto"] Love = namedtuple("Love", fields, rename=True)# 如果某些屬性有默認值呢? 如何設置? # 可以設置defaults參數,為一個序列類型 # 以從右到左的順序來為屬性賦默認值 fields = ["1name", "class", "def", "love_into", "hobby", "motto"] Love = namedtuple("Love", fields, rename=True, defaults=["Coding", "Never Stop Learning!"])# 2、創建對象 # keyou = Love("可優", "帥男", 17, "Lemon little girl", "Coding", "Never Stop Learning!") # 由于hobby和motto這兩個屬性已經有默認值了,所有可以不用傳這兩個參數 keyou = Love("可優", "帥男", 17, "Lemon little girl")# 3、獲取命名元組的值 print(keyou[1]) # 支持元組的索引取值 print(keyou[-2:]) # 支持切片 # print(keyou.1name) # 支持通過字段名來取值 print(keyou._0) # 支持通過字段名來取值

2.創建

創建對象的兩種方式:

# 創建對象的方式 from collections import namedtuple ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! '''# 1、定義一個類 Love = namedtuple("Love", "name gender age love_into hobby motto")# 2、創建對象 # 方法一,調用構造器來創建對象 keyou = Love("可優", "帥男", 17, "Lemon little girl", "Coding", "Never Stop Learning!")# 方法二,使用_make方法來創建對象 one_person_value = ["可優", "帥男", 17, "Lemon little girl", "Coding", "Never Stop Learning!"] # 任何一個序列類型都行 keyou = Love._make(one_person_value)# 3、獲取命名元組的值 print(keyou[1]) # 支持元組的索引取值 print(keyou[-2:]) # 支持切片 print(keyou.name) # 支持通過字段名來取值

3.取值

獲取命名元組中的元素的三種方式:

# 獲取命名元組中的元素的方法 from collections import namedtuple# 1、定義一個類 Love = namedtuple("Love", "name gender age love_into hobby motto")# 2、創建對象 one_person_value = ["可優", "帥男", 17, "Lemon little girl", "Coding", "Never Stop Learning!"] # 任何一個序列類型都行 keyou = Love._make(one_person_value)# 3、獲取命名元組的值 # 方法一,通過索引取值,也可以通過切片取值 print(keyou[1]) # 支持元組的索引取值 print(keyou[-2:]) # 支持切片# 方法二,通過字段名來取值 print(keyou.name)# 方法三,通過getattr來取值 print(getattr(keyou, 'gender'))

4.其他操作

命名元組支持的其他操作:

_asdict方法 _replace方法 _fields屬性 _field_defaults屬性 ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' # 命名元組支持的其他操作from collections import namedtuple# 1、定義一個類 fields = ["name", "age", "gender", "love_into", "hobby", "motto"] Love = namedtuple("Love", fields, rename=True, defaults=["Coding", "Never Stop Learning!"])# 2、創建對象 one_person_value = ["可優", "帥男", 17, "Lemon little girl", "Coding", "Never Stop Learning!"] # 任何一個序列類型都行 keyou = Love._make(one_person_value)# 3、獲取命名元組的值 # 方法一,通過索引取值,也可以通過切片取值 # print(keyou[1]) # 支持元組的索引取值 # print(keyou[-2:]) # 支持切片# 方法二,通過字段名來取值 # print(keyou.name)# 方法三,通過getattr來取值 # print(getattr(keyou, 'gender'))# 4、其他操作 # _asdict方法,將元組轉化為字典 one_dict = keyou._asdict() print(dict(one_dict))# _replace方法,修改元組中的值,會創建一個新元組,之前的元組未修改 print("keyou的名牌號為:{}".format(id(keyou))) new_keyou = keyou._replace(age=16) print("new_keyou的值為:{}\n新門牌號為:{}\n".format(new_keyou, id(new_keyou)))# _fields,獲取命名元組的所有屬性名 print(keyou._fields)# _field_defaults,獲取命名元組的所有屬性默認值 print(keyou._fields_defaults)

5.應用場景

將測試數據從Excel(csv、json、數據庫)中讀取出來,在Python中處理時,往往可以使用namedtuple來承載數據需要使用元組來處理數據的所有場景都可以

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Python中比元组更好用的namedtuple的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。