一篇帖子
知乎_為什麼使用集合
集合是乙個無序集合,沒有重複元素。基本用途包括成員測試和消除重複的條目。集合物件還支援數**算,如並集、交集、差集和對等差分。python 中使用tracemalloc 來檢視記憶體的使用情況因為是無序的基於hash所以無法之間的訪問
但是可以使用遍歷的形式訪問
組合列表(與)之類的數**算,那麼我們可以,並且應該始終使用集合。
交,並,差 (相同,合併,不同) 這些列表運算
且在迭代的時候集合的資料優秀於列表 因為就算專門用來迭代的
無法否認使用集合來處理列表可以使用**更加的優美且簡潔這是寫python 時所想的
globals 獲取當前所有全部變數的情況返回的是乙個字典
locals 獲取當前位置的區域性變數
使用sys.getsizeof()獲取各個容器大小的情況
import sys
s =l =
[i for i in
range(30
)]d =dict
(zip
(s,l)
)print
(sys.getsizeof(s)
)print
(sys.getsizeof(l)
)print
(sys.getsizeof(d)
)out:
2272
3441184
可以見因為集合和字典是無序的(雜湊表) 所以資料記憶體占有較大
假如說集合是為了解決列表的一方面的處理那麼其迭代會比原來有優勢
集合的新增和移除元素
a =
a.add(6)
print
(a)out:
#add是新增單個的元素
#update 可以新增多個元素
a.update(
[i for i in
range(9
,20)]
)out:
而字典式一種可以理解為有資訊的資料容器 和zip有很大的關係
name =
["j"
,"k"
,"s"
]age =[19
,20,21
]for n,a in
zip(name,age)
:print
("name is :"
,name,
"age is :"
,age)
Python容器資料型別 操作 比較
1 列表是乙個有序集合,所有元素按照先後順序排序。即 先進來的站在最前頭 2 列表可以有 增 刪 查 改 的操作 3 列表可以對元素分配下標 索引 位置 4 列表可以儲存任何型別的資料或容器 5 定義列表 變數名 值1,值2,值3,值n 6 定義空列表 變數名 1 列表 下標 值 2 列表 切片 值...
C STL基本容器比較
在stl中基本容器有 string vector list deque set map set 和map都是無序的儲存元素,只能通過它提供的介面對裡面的元素進行訪問 set 集合,用來判斷某乙個元素是不是在乙個組裡面,使用的比較少 map 對映,相當於字典,把乙個值對映成另乙個值,如果想建立字典的話...
STL容器效率比較
1 vector 變長一維陣列,連續存放的記憶體塊,有保留記憶體,堆中分配記憶體 支援操作,高效率的隨機訪問 在最後增加元素時,一般不需要分配記憶體空間,速度快 在中間或開始操作元素時要進行記憶體拷貝效率低 vector高效的原因在於配置了比其所容納的元素更多的記憶體,記憶體重新配置會花很多時間 注...