容器(collection)
什麼是容器:
容器就是一種資料型別,複合資料型別,儲存多個變數;
容器就是物件,物件都是儲存在堆中的;Python中萬物皆物件
Data area:資料區 靜態的不變的值
Code area:程式碼區
Stack棧:申請變數 先進後出FILO 後進先出OIFO 棧的空間很小
Heap 堆:容器其實就是物件,物件是儲存在堆中的 堆的空間很大
list 列表
1、可以存放多個資料
2、可以有重複的資料
3、資料是有序的 底層是基於雙向連結串列實現的
set 集合
1、可存放多個資料
2、不能存放重複的資料
3、存放的資料是無序的
tuple 元組
1、可以存放多個資料
2、可以存放重複的資料
3、存放的資料是有序的
4、存放的資料是固定的,不能發生變化的
dict 字典
1、存放的是key:value鍵值對資料
2、key是不能重複的,vlaue可以重複
3、存放的資料沒有順序
list列表
列表是一種線性表,線性表是有順序的表,因為有序,所以有下標;且可以儲存相同的資料
線性表的實現:陣列(array)、連結串列(list)、棧(stack)、佇列(queue),python中沒有陣列
列表的定義
1、藉助若資料型別語言的特點:直接賦值
2、全域性函式list
列表的元素
1、element 容器中儲存的值,列表中元素如何訪問或者修改,可以利用下標來訪問元素或者修改元素
ls[下標] 下標從0開始
2、獲取list中元素的個數
len的全域性函式 可以接收可迭代物件
len(ls) # 獲取元素的個數
user
[‘aaa’, ‘bbb’, ‘ccc’]len(user)
3
列表的遍歷
for迴圈就是用於迭代可迭代物件的
while迴圈,需要一個索引,從0開始
列表的常見方法
[‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’,‘pop’, ‘remove’, ‘reverse’, ‘sort’]
全域性函式:
len(list)可以獲取列表中資料的數量
max(list) 可以獲得列表中最大的資料
min(list) 可以獲得列表中最小的資料
list(seq) 將一個序列資料轉換成列表
set 集合
Set:無序的、不能重複的 ,因為不能儲存相同的資料,所以無下下標
定義集合
s = {必須有元素}
s = set() 全域性函式
常見方法
add’, ‘clear’, ‘copy’, ‘difference’, ‘difference_update’, ‘discard’,
‘intersection’, ‘intersection_update’, ‘isdisjoint’, ‘issubset’, ‘issuperset’,
‘pop’, ‘remove’, ‘symmetric_difference’, ‘symmetric_difference_update’, ‘union’,
‘update’]
|-- add(item) # 新增元素
|-- clear # 清空集合
|-- copy(set) # 複製物件(淺拷貝物件)
|-- pop() # 隨機移除元素
|-- remove(item) # 刪除集合元素
|-- discard # 嘗試著移除元素 如果元素是成員,則將其從集合中移除。如果元素不是成員,則不執行任何操作。
|-- intersection # 交集
|-- difference # 差集
|-- union # 並集
#常用方法的簡單演示,詳細的使用在習題中會詳細說明
name = {“eichi”,“yichen”,“yichentong”}
name
{‘yichen’, ‘eichi’, ‘yichentong’}name.add(“haha”)
name
{‘yichen’, ‘haha’, ‘eichi’, ‘yichentong’}name.add(123)
name
{‘yichen’, ‘eichi’, ‘yichentong’, ‘haha’, 123}user = name.copy()
user
{‘yichen’, ‘yichentong’, 123, ‘haha’, ‘eichi’}user.pop()
‘yichentong’user.pop()
‘yichen’user
{123, ‘haha’, ‘eichi’}user.remove(“eichi”)
user
{123, ‘haha’}user
{123, ‘haha’}user.discard(123)
user
{‘haha’}user
{‘haha’}name
{‘yichen’, ‘eichi’, ‘yichentong’, ‘haha’, 123}name.intersection(user)
{‘haha’}name.difference(user)
{‘yichen’, 123, ‘eichi’, ‘yichentong’}name.union(user)
{‘yichen’, ‘yichentong’, 123, ‘haha’, ‘eichi’}
集合的遍歷
tuple 元組
()包裹的,特點是固定,不能發生變化的,是不可變型別,有序的(可以通過下標來進行訪問);可以理解為列表的特殊形式,一旦生命就不允許改變
#全域性函式的解釋
Help on class tuple in module builtins:
class tuple(object)
| tuple(iterable=(), /)
|
| Built-in immutable sequence.
|
| If no argument is given, the constructor returns an empty tuple.
| If iterable is specified the tuple is initialized from iterable’s items.
|
| If the argument is a tuple, the return value is the same object.
|
#翻譯一下
有關模組內建中的類元組的幫助:
類元組(物件)
|元組(iterable=,/)
|內建不可變序列。
|如果沒有給出引數,則建構函式返回一個空元組。
|如果指定了iterable,則元組將從iterable的項初始化。
|如果引數是元組,則返回值是相同的物件。
元組的元素
count() 統計某個值的個數
index() 檢視某個值的位置 如存在多個元素,預設查詢第一次出現的元素
元組的注意事項
元組是不可變型別,也就意味著一旦元組建立,元素的個數、值都將固定,不能修改、刪除等操作;這是為了程式碼的安全性,所以在程式設計開發過程中,對於一部分不需要更改的資料可以定義成元組型別;元組型別的資料類似於C中的列舉型別,如果子元素是可變型別,那就可以改變著個子元素。
元組的遍歷
與列表、集合類似,採用for迴圈來進行遍歷
dict 字典
字典是一種鍵值對形式儲存的資料結構,鍵是唯一的,在python中鍵只能儲存字串型別
字典的定義
語法結構:
字典變數名稱={“變數 1”:”值 1”, “變數 2”:”值 2”, “變數 3”:”值 3”,}
定義的時候以鍵值對的形式定義存在,相當於給每個值取了名字
全域性函式的解釋:
help(dict)
Help on class dict in module builtins:
class dict(object)
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object’s
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
#翻譯一下
幫助(dict)
關於模組內建中的類dict的幫助:
類dict(物件)
|dict()->新建空字典
|dict(對映)->從對映物件的
|(鍵,值)對
|dict(iterable)->新字典初始化為通過:
|d={}
|對於iterable中的k,v:
|d[k]=v
|dict(**kwargs)->用name=value對初始化的新字典
|在關鍵字引數列表中。例如:dict(one=1,two=2)
字典的常用方法
常見方法:
‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’,
‘popitem’, ‘setdefault’, ‘update’, ‘values’]
|-- clear() #清空字典
|-- copy(dict) #複製物件(淺拷貝物件)
|-- get(key,default)#用於返回鍵對應的值,引數寫的是鍵,第二個引數,用於給一個預設值,返回的是預設值
|-- keys() #返回鍵
|-- values() #返回值
|-- items() #返回的是元組
|-- pop(key) # 通過key,移除對應的鍵值對
|-- popitem # LIFO的順序
LIFO:last in first out 後進先出
FIFO:firt in first out python無佇列 先進先出
比較
元組 Tuple 是存放固定的資料
集合 Set 中的資料插入和遍歷的時間,隨資料增多而變慢
列表 List 中的資料插入和查詢的時間,隨資料的增多而變慢
字典 Dict 中的資料插入和查詢的速度非常快,不會因為資料太多而變慢
元組、集合和列表佔用記憶體較少,字典佔用記憶體較多,字典是一種通過佔用空間來換取
操作速度的一種資料型別。
相關文章
- Java Collection介面 ArrayList集合(容器)Java
- Collection
- Laravel CollectionLaravel
- Collection介面
- python-collectionPython
- [Javascript] garbage collectionJavaScript
- Java集合-CollectionJava
- Refactoring to collection(譯)
- [Java基礎]collectionJava
- Laravel Collection 基本使用Laravel
- Java™ 教程(Collection介面)Java
- MongoDB 複製一個collection裡的資料到另一個collectionMongoDB
- Collection集合的遍歷
- ch14_collection_and_map
- learn from collection framework designFramework
- Java:Collection集合、泛型Java泛型
- Java 的 Collection 與 List 集合Java
- Property [title] does not exist on this collection instance
- python ref counting based garbage collectionPython
- Collection集合、List集合及其方法
- Java Collection集合面試題Java面試題
- Android Blog Collection v1.0Android
- collection和collections的區別
- [Memory leak] 3. Garbage collection in Closure
- 十五個常用的 Laravel 集合(Collection)Laravel
- collection庫更新1.4.0版本
- Nik collection 4.3,濾鏡外掛
- C語言垃圾回收(Garbage Collection)C語言
- 15個常用的Laravel 集合(Collection)Laravel
- Java8 Lambda 之 Collection StreamJava
- PS 2021外掛nik collection 閃退怎麼辦,Nik Collection崩潰閃退解決方法
- 你對Collection中Set、List、Map理解?
- PS濾鏡外掛:Nik Collection 5
- collection v1.3.1升級記錄
- 深入理解Java中的Garbage CollectionJava
- Java的垃圾回收(Garbage Collection)機制Java
- 教程:Laravel 集合(Collection)的基礎用法Laravel
- Android基礎之Java集合框架CollectionAndroidJava框架