個人主頁:【😊個人主頁】
系列專欄:【??Python】
文章目錄
- 前言
- 組合數據類型
- 序列類型
- 序列常見的操作符
- 列表
- 列表操作
- len()
- append()
- insert()
- remove()
- index()
- sort()
- reverse()
- count()
- 元組
- 三種序列類型的區別
- 集合類型
- 四種操作符
- 集合
- set
- frozenset
- 常見的集合類型操作函數
- 映射類型
- 字典
- 字典類型的常用方法
- 數據類型轉換
前言
在上一篇文章中,我們介紹了九種數據類型的前三種,包括了數字,布爾類型,字符串類型,今天我們就來介紹在Python中占有特殊地位的五種組合數據類型:序列,列表,元組,字典,集合。想了解更多Python內容請訂閱內容【Python系列教程】
組合數據類型
組合數據類型能將不同類型的數據組織在一起,實現更復雜的數據表示或數據處理功能。根據數據之間的關系,組合數據類型可以分為三類:序列類型、映射類型和集合類型。序列類型包括列表、元組和字符串三種。映射類型用鍵值對表示數據,典型的映射類型有字典。集合類型的數據中元素是無序的,集合中不允許有相同的元素存在。
——集合類型:是一個元素集合,元素之間無序,相同元素在集合中唯一存在。集合(set)
——序列類型:是一個元素向量,元素之間存在先后關系,通過序號訪問,元素之間不排他。序列類型的典型代表是字符串(str)、列表(list)、元組(tuple)
——映射類型:是“鍵-值”數據項的組合,每個元素是一個鍵值對,表示為(key,value).映射類型的典型代表是字典(dict)
序列類型
序列類型的元素之間存在先后關系,通過索引來訪問,當我們需要訪問序列中的某個元素時,要找出其索引,再通過索引尋找元素。
這些序列類型都支持索引和切片操作,可以通過索引訪問序列中的元素,也可以通過切片獲取序列的子序列。此外,還可以使用內置函數和方法對序列進行操作,例如獲取序列的長度、查找元素的位置、添加、刪除和修改元素等。
序列常見的操作符
操作符 | 描述 |
---|---|
x in s | 如果x是s的元素,返回True,否則返回Flase |
x not in s | 如果x不是s的元素,返回True,否則返回Flase |
s +t | 連接s和t |
s n或ns | 將序列s復制n次 |
s[i] | 索引,返回序列的第i個元素 |
s[i:j] | 切片,返回序列s到第i到第j個元素的子序列(不包含第j個元素) |
s[i:j:k] | 步驟切片,返回包括序列s到第i到第j個元素以k為步長的子序列 |
len(s) | 序列s的元素個數(長度) |
min(s) | 序列s中的最小元素 |
max(s) | 序列s中的最大元素 |
s.index(x) | 序列s中第一次出現元素x的位置 |
s.count(x) | 序列s中元素x出現的總次數 |
列表
列表是 Python 中最常用的序列類型,它是由元素組成的可變序列,使用方括號括起來,并用逗號分隔。4
列表中的元素(又稱數據項)不需要具有相同的類型。創建列表時,只要把逗號分隔的元素使用方括號括起來即可。列表是可變的,用戶可在列表中任意增加元素或刪除元素,還可對列表進行遍歷、排序、反轉等操作。
list = ['runoob', 786, 2.23, 'john', 70.2]
tinylist = [123, 'xue']
print(list) # 輸出完整列表
print(list[0] ) # 輸出列表的第一個元素
print(list[1:3]) # 輸出第二個至第三個元素
print(list[2:]) # 輸出從第三個開始至列表末尾的所有元素
print (tinylist * 2 ) # 輸出列表兩次
print (list + tinylist) # 打印組合的列表
列表操作
len()
my_list = [1, 2, 3, 4]
print(len(my_list)) # 輸出4
返回列表的長度
append()
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 輸出[1, 2, 3, 4]
向列表末尾添加元素
insert()
my_list = [1, 2, 3, 4]
my_list.insert(2, 5)
print(my_list) # 輸出[1, 2, 5, 3, 4]
在指定位置插入元素
remove()
my_list = [1, 2, 3, 4]
my_list.remove(3)
print(my_list) # 輸出[1, 2, 4]
移除指定元素
index()
my_list = [1, 2, 3, 4]
print(my_list.index(3)) # 輸出2
返回指定元素第一次出現的索引
sort()
my_list = [3, 1, 4, 2]
my_list.sort()
print(my_list) # 輸出[1, 2, 3, 4]
對列表進行排序
reverse()
my_list = [1, 2, 3, 4]
my_list.reverse()
print(my_list) # 輸出[4, 3, 2, 1]
反轉列表
count()
my_list = [1, 2, 2, 3, 3, 3]
print(my_list.count(2)) # 輸出2
返回指定元素在列表中出現的次數
元組
Python的元組與列表類似,不同之處在于元組的元素不能修改,元組使用小括號(),列表使用方括號。元組創建很簡單,只需要在括號中添加元素,并使用括號隔開即可。元組是序列類型中比較特殊的類型,因為它一旦創建就不能被修改。元組類型在表達固定數據項、函數多返回值、多變量同步賦值、循環遍歷等情況下十分有用。Python中元組采用逗號和圓括號(可選)來表示。一個元組可以作為另一個元組的元素,可以采用多級索引獲取信息。
元組用 () 標識。內部元素用逗號隔開。但是元組不能二次賦值,相當于只讀列表
tuple = ('runoob', 786, 2.23, 'john', 70.2)
tinytuple = (123, 'xue')print(tuple) # 輸出完整元組
print(tuple[0]) # 輸出元組的第一個元素
print(tuple[1:3]) # 輸出第二個至第四個(不包含)的元素
print(tuple[2:]) # 輸出從第三個開始至列表末尾的所有元素
print(tinytuple * 2) # 輸出元組兩次
print(tuple + tinytuple) # 打印組合的元組
注:元組不允許更新,而列表是允許更新的
三種序列類型的區別
- 字符串是由單一字符組成的不可修改的序列類型。
- 列表是一個可以修改的序列類型,使用相對更加靈活。
- 元組是一個不可變的序列類型,構建好以后不可以進行任何修改。
字符串是不可變的,而列表和元組是可變的。
字符串和元組一旦創建就不能修改,而列表可以進行修改。
元素的類型可以是任意的,但是元組和字符串的元素類型必須一致。
字符串使用單引號或雙引號,列表和元組使用方括號和小括號來定義。
集合類型
四種操作符
Python 中的集合與數學中集合的概念是一致的,因此,兩個集合可以做數學意義上的交集并集、差集計算等
操作符的運算 | 描述 |
---|---|
S-T | 返回一個新集合包括在集合S中但不在集合T中的元素 |
S&T | 返回一個新集合包括同時在集合S和集合T中的元素 |
S^T | 返回一個新集合包括集合S和集合T中的非共同元素 |
ST | 返回一個新集合包括集合S和集合T中的所有元素 |
集合
在Python中,集合類型是一種可變的、無重復元素的無序集合。Python提供了兩種集合類型:set和frozenset。
set
set是一個可變集合,可以通過添加、刪除元素來修改集合。創建set可以通過花括號{}或者set()函數來實現。
s = {1, 2, 3} # 創建一個集合包含元素1、2、3
frozenset
rozenset是一個不可變集合,創建后不能再添加或刪除元素。創建frozenset可以使用frozenset()函數。
fs = frozenset([4, 5, 6]) # 創建一個不可變集合包含元素4、5、6
常見的集合類型操作函數
S.add(x):如果數據域x不在集合S中,將x增加到s
S.remove(x):如果x在集合S中,移動該元素;不在產生KeyError異常
S.clear():移除S中所有數據域
len(S):返回集合S元素個數
x in S:如果x是S的元素,返回True,否則返回Flase
x not in S:如果x不是S的元素,返回True,否則返回Flase
映射類型
字典
字典是 Python 中內置的映射類型。映射是通過鍵值查找一組數據值信息的過程,由 key-value的鍵值對組成,通過 key 可以找到其映射的值 value。
字典可以看作是由鍵值對構成的列表。在搜索字典時,首先查找鍵,當查找到鍵后就可以直接獲取該鍵對應的值。這是一種高效、實用的查找方法。這種數據結構之所以被命名為字典,是因為它的存儲和檢索過程與真正的字典類似。鍵類似于字典中的單詞,根據字典的組織方式(例如,按字母順序排列)找到單詞(鍵)非常容易,找到鍵就能找到相關的值(定義)。但反向的搜索,使用值去搜索鍵則難以實現。
字典中的值并沒有特殊的順序,它們都存儲在一個特定的鍵(key)里。鍵可以是數字、字符串以及元組等。此外,字典中的元素(鍵值對)是無序的。當添加鍵值對時,Python會自動修改字典的排列順序,以提高搜索效率,且這種排列方式對用戶是隱藏的。
dicts 為字典名,key 為鍵,value 為值
建立模式:
{<鍵1>:<值1>, <鍵2>:<值2>, … , <鍵n>:<值n>}
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'runoob', 'code': 6734, 'dept': 'sales'}
print(dict['one']) # 輸出鍵為'one' 的值
print(dict[2]) # 輸出鍵為 2 的值
print(tinydict) # 輸出完整的字典
print(tinydict.keys()) # 輸出所有鍵
print(tinydict.values()) # 輸出所有值
字典類型的常用方法
數據類型轉換
來源:菜鳥教程 Python變量類型