天天看點

Python程式設計 | 複合資料類型

作者:醒不來的胡博士

學習目标:

  • 掌握四種複合資料類型的定義
  • 掌握四種複合資料類型的使用流程
  • 掌握類型轉換和格式化輸出的方法
  • 掌握元組和清單的差別
  • 熟悉複合資料類型在實際項目中的使用技巧
  • 了解四種複合資料類型的使用差別

思維導圖

Python程式設計 | 複合資料類型

4.1 List(清單)

4.1.1 清單的建立

建立清單:

變量名 = [元素1,元素2,…,元素n]

list類型中區分元素的順序,且允許包含重複的元素。

4.1.2 基本操作

1. 索引

清單每一個元素都對應一個整數型的索引值,可以通過索引值來得到相應的元素值。同時支援清單元素的正向索引和反向索引。

正向索引即索引值為正,從0開始;

反向索引即索引值為負,從-1開始。若是反向索引,則-1為末尾元素對應的索引編号。

2. 切片

切片操作可以截取清單變量中的部分元素,并傳回一個子清單變量。

切片操作中,生成子清單的元素包含起始索引對應的元素,但是不包含終止索引對應的元素。

3. 加法和乘法

  • 加法操作使用加号(+)完成,表示把加号兩端的清單變量連接配接形成一個新清單;
  • 乘法操作使用星号(*)完成,表示對目前清單對象進行複制并連接配接,并形成一個新清單。

4. 修改和删除

  • 通過索引值對相應元素進行修改或删除。
  • 删除整個清單或清單中的部分元素,使用del指令。删除整個清單後,不可再次引用。

5. 追加插入和擴充

  • append:在目前清單對象尾部追加元素;
  • insert:在目前清單的指定索引位置插入元素;
  • extend:對目前清單元素進行批量增加。

4.1.3 多元清單

建立三個清單類型的變量a、n和x。其中,變量a和n中元素都是基本類型,變量x中的元素都是清單類型。

>>> a = ['a',1]

>>> n = ['b',2]

>>> x = [a,n]

>>> x

[['a',1],['b',2]]

>>> x[0] # 顯示第一個元素

['a', 1]

>>> x[0][1] # 顯示第一個元素中的第二個元素

1

直接輸入清單的資料,系統會根據輸入生成相應的清單次元。

>>>l = [[1,2,3],[4,5,6]]

>>>print(l)

輸出結果:

[

[1,2,3],

[4,5,6]

]

也可以使用清單解析方式生成了二維矩陣

cols = 7

rows = 9

list_2d = [[col + 1 for col in range(cols)] for row in range(rows)]

print(list_2d)

4.1.4 疊代器

首先建立了一個清單類型變量lst,然後建立了該清單的疊代器對象lstiter,并且通過該疊代器對象的next()方法周遊清單中的元素。

__next__()方法,傳回下一個值。iter方法通路清單。

4.1.5 清單解析

>>>list=[1,2,3,4,5,6,7,8,9,10] #方法1:直接指定

>>>list=[]#方法2:先建立一個空清單,然後通過for循環實作

for n in range(1,11):

list.append(n);

>>>list(range(1,11)) #方法3:清單解析

[1,2,3,4,5,6,7,8,9,10]

for循環在這裡可以很好的生成list

首先針對數值運算,使用清單解析生成了1到10的平方值;

其次,針對字元運算,使用清單解析生成了指定範圍的字母組合清單。

>>> [x * x for x in range(1, 11)]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 或者字母所進行的兩層循環

>>> [m + n for m in 'ABC' for n in 'XYZ']

['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

4.1.6 清單函數和方法

Python程式設計 | 複合資料類型
Python程式設計 | 複合資料類型

4.2 tuple(元組)

4.2.1 元組的建立

建立元組:

變量名 = (元素1,元素2,…,元素n)

注意:

當元組中隻包含一個元素時,需要在元素後面添加逗号,否則括号會被當作運算符使用。

4.2.2 基本操作

1. 通路

使用下标索引來通路相應的元素值。也可采用正向索引和反向索引兩種方式,并支援切片操作。

2. 修改

元組中的元素值是不允許修改的,可以對元組進行連接配接生成新的元組。

3. 删除

元素值不允許删除的,但可使用del語句删除整個元組。

需要注意的是,删除後的元組對象不可再次引用。

4. 統計

通過内置的count方法統計某個元素出現的次數。

5. 查找

通過内置的index方法查找某個元素首次出現的索引位置。

4.2.3 元組函數和方法

Python程式設計 | 複合資料類型
Python程式設計 | 複合資料類型

表中的count方法和index方法,實際是元組類型和清單類型所共有的方法,其使用方法和清單完全相同。

4.2.4 元組的優勢

  • 可以使函數傳回多個值
  • 可以使程式運作性能提升
  • 一般來說,建立元組類型tuple的變量比清單類型list要快,而且占用更小的存儲空間。
  • 使用元組是線程安全的
  • 元組類型變量的元素不可更改性,可保證多線程讀寫時的安全問題。

4.3 dict(字典)

4.3.1 字典的建立

建立字典對象:

變量名=(key1:value1, key2:value2,…, keyn:valuen)

  • 字典的元素是可變的,可以是清單、元組、字典等任意資料類型,但鍵(key)值必須使用不可變類型。
  • 在同一個字典變量中,鍵(key) 值必須是唯一的。

4.3.2 基本操作

1. 通路

字典是無序的,沒有索引,不能通過下标索引。通過對key值的索引進行通路。

2. 修改

通過對key值的引用對value值的修改操作。

3. 删除

字典的删除操作中,可以删除某個元素或删除整個字典,也可以清空字典元素。.

4.3.3 字典的嵌套

>>>Va1 = {a:{b:1,c:2},d:{e:3,f:4}} #字典的value值是字典

>>>Va2 = {a:[1,2,3],b:[4,5,6]} #字典的value值是序列

>>>n1={'surname':'wang','name':'gang'}

>>>n2={'surname':'zhang','name':'san'}

>>>n3={'surname':'liu','name':'wen'}

>>>n4=[n1,n2,n3] #序列的元素是字典

n1、n2、n3是字典類型的變量,n4是清單類型變量,且n4中的元素即為n1、n2、n3。

4.3.4 字典的周遊

username={'full_name':'ZhangWei', 'surname':'Zhang', 'name':'Wei' }

#周遊所有的鍵-值對

for k,v in username.items():

print('key:'+k)

print('value:'+v+'\n')

#周遊所有鍵

for k in username.keys():

print(k)

print('key:'+k+'-value:'+username[k])

#周遊所有的值

for v in username.values():

print(v)

4.3.5 字典函數和方法

Python程式設計 | 複合資料類型
Python程式設計 | 複合資料類型

4.4 set(集合)

4.4.1 集合的建立

建立集合對象:

變量名 = {元素1,元素2,…,元素n}

集合特性:

  • 無序性:元素之間沒有确定的順序。
  • 互異性:不會出現重複的元素。
  • 确定性:元素和集合隻有屬于或不屬于的關系。

注意:

建立空集合用set();

{}建立一個空字典。

4.4.2 集合的數學運算

數學運算後依然保持集合的特性,沒有重複的元素

Python程式設計 | 複合資料類型

4.4.3 基本操作

1. 更改

  • add():添加一個元素
  • update():同時添加多個元素。

2. 删除

  • discard() 和 remove() 方法删除集合中特定的元素。
  • 若删除的對象不存在,remove()方法會引起錯誤,discard()方法不會。

4.4.4 不可變集合

Python程式設計 | 複合資料類型

4.4.5 集合函數和方法

Python程式設計 | 複合資料類型

4.5 類型轉換和格式化輸出

4.5.1 類型轉換

不可變資料類型:

記憶體中不管有多少個引用,相同的對象隻占用一塊記憶體;當改變變量值時,必須建立新的對象。

可變資料類型:

對一個變量進行操作時,其值可變;且值的變化并不會引起建立對象的操作,即位址是不會變的,僅内容變化或位址擴充。

通過id()函數獲得變量的位址,驗證資料類型是否可變

Python程式設計 | 複合資料類型

4.5.2 格式化輸出

“%”進行格式化輸出

Python程式設計 | 複合資料類型
Python程式設計 | 複合資料類型

使用format()函數進行格式化輸出

基本用法:

(1)不帶編号,即“{}”;

(2)帶數字編号,可調換順序,即“{1}”、“{2}”;

(3)帶關鍵字,即“{a}”、“{tom}”。

特殊用法:

(1)< (預設)左對齊、> 右對齊、^ 中間對齊、= (隻用于數字)在小數點後進行補齊;

(2)取位數“{:4s}”、"{:.2f}"等。

4.6 總結

  1. 介紹四種複合資料類型的定義及使用流程
  2. 介紹類型轉換和格式化輸出的方法
  3. 介紹複合資料類型在實際項目中的使用技巧

    與差別

4.7 每日一分享

天不生無用之人,地不長無用之草。

黃河尚有澄清日,豈可人無得運時。

雪壓寒梅頭不低,卧薪嘗膽待佳期。

終有一日同風起,扶搖直上九萬裡。