容器(collection)

SUNING0921發表於2020-10-04

什麼是容器:

 容器就是一種資料型別,複合資料型別,儲存多個變數;
 容器就是物件,物件都是儲存在堆中的;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 中的資料插入和查詢的速度非常快,不會因為資料太多而變慢
元組、集合和列表佔用記憶體較少,字典佔用記憶體較多,字典是一種通過佔用空間來換取
操作速度的一種資料型別。

相關文章