日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python其他数据结构collection模块-namtuple defaultdict deque Queue Counter OrderDict arrary

發布時間:2025/3/14 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python其他数据结构collection模块-namtuple defaultdict deque Queue Counter OrderDict arrary 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nametuple

  是tuple擴展子類,命名元組,其實本質上簡單類對象

from collections import namedtupleinfo = namedtuple("Info", ['name', 'age', 'height']) # 賦值,是不是有點像面向對象中實例變量方式 info.name = "北門吹雪" info.age = 18 info.height = 175# 訪問 print(info.name)

  其實本質上和下面方式一樣

class Info:def __init__(self):self.name = Noneself.age = Noneself.height = Nonepassinfo = Info() # 賦值 info.name = "北門吹雪" info.age = 18 info.height = 175 # 訪問 print(info.name)

  相關方法

    1. _make 初始化賦值,?必須長度一致

from collections import namedtupleinfo = namedtuple("Info", ['name', 'age', 'height'])._make(["北門吹雪", 18, 175])# 訪問 print(info.name)

    2. _asdict  將nametuple對象轉換為字典對象,是個有序字典

from collections import namedtupleinfo = namedtuple("Info", ['name', 'age', 'height'])._make(["北門吹雪", 18, 175])# 訪問 print(info._asdict())

  

  

defaultdict

  是dict的擴展類,訪問字典的key如果沒有則自動設置默認值,并添加進字典

info = dict() name = info.setdefault('name', "北門吹雪") print(name, info)from collections import defaultdict # 默認值必須是可迭代對象 info = defaultdict(lambda: "北門吹雪") name = info['name'] print(name, info)

  

deque  

  雙端隊列,?操作和list類似

  list deque 推薦用來保存相同類似數據,相關方法和list一致

  特性:?deque是線程安全的,list不是線程安全,多線程編程則使用deque

from collections import deque names = deque() names.append("北門吹雪") names.append("QiNiuYun") names.insert(0, "今日頭條") print(names)

  

Queue    

  隊列(先進先出),通過 deque實現

  核心兩個方法 put get,會堵塞

from queue import Queuemessage = Queue() # 放入數據 message.put("北門吹雪") # 消費數據 print(message.get())

  

Counter  

  對可迭代對象做統計出現個數,直接返回統計結果,是dict的子類

from collections import Counter from random import randintnumbers = [randint(1, 5) for _ in range(20)] numbers_count = Counter(numbers) print(numbers_count)

  相關方法

    1.?update        添加新的數據

from collections import Counter from random import randintnumbers = [randint(1, 5) for _ in range(20)] numbers_count = Counter(numbers) print(numbers_count) # 添加新的數據 numbers_count.update([randint(1, 10) for _ in range(20)]) print(numbers_count)

    2. most_common(N)   輸出出現次數當前最多的前N個元素

from collections import Counter from random import randintnumbers = [randint(1, 5) for _ in range(20)] numbers_count = Counter(numbers) print(numbers_count) # 添加新的數據 numbers_count.update([randint(1, 10) for _ in range(20)]) print(numbers_count)# 輸出出現次數當前最多的前3個元素,返回列表 print(numbers_count.most_common(3))

  

OrderDict

  繼承dict, 保持字典添加順序,具有dict所有方法

from collections import OrderedDictinfo = OrderedDict() # 填入數據 info["name"] = "北門吹雪" info['age'] = 18 info['height'] = 175 print(info)

  其他方法

    1. popitem    默認刪除最后的key:value,并返回

from collections import OrderedDictinfo = OrderedDict() # 填入數據 info["name"] = "北門吹雪" info['age'] = 18 info['height'] = 175 # 返回元組形式 print(info.popitem('name'))

    2.?pop      必須傳入key,刪除key:value,返回value

from collections import OrderedDictinfo = OrderedDict() # 填入數據 info["name"] = "北門吹雪" info['age'] = 18 info['height'] = 175# 返回age對應的值 print(info.pop('age'))

    3.?move_to_end ??傳入key,將元素移到最后

from collections import OrderedDictinfo = OrderedDict() # 填入數據 info["name"] = "北門吹雪" info['age'] = 18 info['height'] = 175# 移動數據 info.move_to_end('age') print(info)

?

arrary

  只能存放一種類型的數組,這個數組高性能非常高,非常類似list除了只能存放一種類型數據

 #標識符 存放數據類型? 占用字節?

?

  'u'     Unicode字符  ? ?2

  “L”    符號整數    ?4

  “L”    無符號整數    4

  “q”    符號整數    ?8

  “q”    無符號整數    8

  F    ? ′浮點? ? ? ? ? ? ? ? ? ? ? 4

  “D”? ? ? ? ? ? ?浮點? ? ? ? ? ? ? ? ? ? ? ?8

import arraynames = array.array("u") print(names.append("北")) print(names.append("門")) print(names.append("吹")) print(names.append("雪")) print(names) print(names[1])

?

  

經驗:

  1.?這些數據類型基礎還是從list tuple set dict基本數據類型擴展而來,本質上添加了一些特性

  2.?不同的情況下選擇不同的數據結構對數據進行處理

北門吹雪:?https://www.cnblogs.com/2bjiujiu/

轉載于:https://www.cnblogs.com/2bjiujiu/p/9141431.html

總結

以上是生活随笔為你收集整理的Python其他数据结构collection模块-namtuple defaultdict deque Queue Counter OrderDict arrary的全部內容,希望文章能夠幫你解決所遇到的問題。

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