天天看點

Python ❀ 清單與元組

文章目錄

  • ​​1、清單概念​​
  • ​​1.1 通路清單元素​​
  • ​​1.2 索引(從0開始并非1)​​
  • ​​1.3 清單中的值​​
  • ​​2、修改、添加、删除清單元素​​
  • ​​2.1 修改清單元素​​
  • ​​2.2 添加清單元素​​
  • ​​2.2.1 末尾添加清單元素​​
  • ​​2.2.2 插入清單元素​​
  • ​​2.3 删除清單元素​​
  • ​​2.3.1 以索引删除​​
  • ​​2.3.2 末尾删除​​
  • ​​2.3.3 删除值​​
  • ​​3、組織排列​​
  • ​​3.1 永久性排序​​
  • ​​3.2 臨時性排序​​
  • ​​3.3 反轉輸出清單元素​​
  • ​​3.4 确認清單長度​​
  • ​​4、索引錯誤​​
  • ​​5、周遊清單​​
  • ​​5.1 for循環周遊清單​​
  • ​​6、縮進錯誤與冒号缺失​​
  • ​​6.1 縮進錯誤​​
  • ​​6.2 冒号缺失​​
  • ​​7、數字清單​​
  • ​​7.1 使用range()函數​​
  • ​​7.2 數字清單的統計計算​​
  • ​​8、清單中的一部分​​
  • ​​8.1 切片​​
  • ​​8.2 複制清單​​
  • ​​9、元組​​
  • ​​9.1 元組與周遊​​

1、清單概念

清單是一系列按照特定順序排列的元素集合;元素之間互相獨立,沒有聯系;在Python中使用 [] 表示清單,其中元素使用 , 互相隔離;

a = ["aaa","bbb","ccc",11,22,33,44]
print(a)      

輸出結果:

['', 'bbb', 'ccc', 11, 22, 33, 44]      

1.1 通路清單元素

清單是一個有序集合,是以要通路清單中的元素,隻需要将該元素的索引告訴Python即可傳回對應的元素;

print(a[0])      

輸出結果:

aaa      

當請求清單中的元素時,Python隻傳回元素的值,并不攜帶括号與引号;也可以将元素的傳回值作為字元串進行一些其他操作,如首字母大寫等;

print(a[0].title())      

輸出結果:

Aaa      

1.2 索引(從0開始并非1)

在Python中第一個元素的索引号為0,并不是1;清單的最後一個元素索引為 -1, 當然可以使用正常的排序索引擷取末尾值;

a = ["aaa","bbb","ccc",11,22,33,44]
print(a[0])
print(a[1])
print(a[-1])
print(a[6])      

輸出結果:

aaa
bbb
44
44      

1.3 清單中的值

可以使用清單中的值進行其他操作,如字元串的拼接,數字的運算等;

a = ["aaa","bbb","ccc",11,22,33,44]
txt = a[0] + a[1]
num = a[3] + a[4]
print(txt,num)      

輸出結果:

aaabbb 33      

2、修改、添加、删除清單元素

清單的建立大多數都是動态的,随着程式的運作而增加、修改、删除元素;

2.1 修改清單元素

若需要修改某個清單其中的元素,可以通過元素的索引進行修改,如下代碼:

a = ["aaa","bbb","ccc",11,22,33,44]
a[0] = 'ddd'
print(a[0])      

輸出結果:

ddd      

2.2 添加清單元素

添加元素分為末尾添加和插入兩種;

2.2.1 末尾添加清單元素

a = ["aaa","bbb","ccc",11,22,33,44]
a.append('eee')
print(a[-1])      

輸出結果:

eee      

2.2.2 插入清單元素

a = ["aaa","bbb","ccc",11,22,33,44]
a.insert(3,'fff')    #在索引為3的位置添加字元串為fff的值
print(a[3])      

輸出結果:

fff      

2.3 删除清單元素

在删除元素時也分别有兩種删除方法:以索引号進行元素删除操作、末尾删除元素、直接删除元素的值;

2.3.1 以索引删除

使用del()方法删除需要明确知道所删除元素值的相對應索引;

a = ["aaa","bbb","ccc",11,22,33,44]
del a[1]
print(a)      

輸出結果:

['aaa', 'ccc', 11, 22, 33, 44]      

2.3.2 末尾删除

使用pop()删除會傳回删除的内容,是以可以将其指派給某一個變量進行調用并進行其他操作;

a = ["aaa","bbb","ccc",11,22,33,44]
b = a.pop(3)
print(a)
print(b)      

輸出結果:

['aaa', 'bbb', 'ccc', 22, 33, 44]
11      

當删除的元素不需要被使用時,推薦使用del()方法删除;若是删除的元素仍需要被再一次調用,推薦使用pop()方法;

2.3.3 删除值

當不清楚元素的索引時,可以直接操作删除清單中某元素的值;

a = ["aaa","bbb","ccc",11,22,33,44]
a.remove('aaa')
print(a)      

輸出結果:

['bbb', 'ccc', 11, 22, 33, 44]      

由于使用remove()删除并無傳回資訊,是以可以将其删除的内容指定到某個變量,進行留存;

a = ["aaa","bbb","ccc",11,22,33,44]
b = "aaa"
a.remove(b)
print(a)
print(b)      

輸出結果:

['bbb', 'ccc', 11, 22, 33, 44]
aaa      

當remove()删除完成後,删除的值仍儲存在變量中,仍可以進行其他相關操作;

3、組織排列

在建立清單的過程中,元素的排序取決于錄入元素的順序,是以需要控制其排列順序,以建構的順序進行排列是非常有必要的;

3.1 永久性排序

使用sort()方法可以使得清單永久性排序;可以使用參數reverse=True進行反向排序;

sort()隻支援單一的類型資料進行排序,如str或int,否則會報類型錯誤;

a = ["ddd","aaa","rrr"]
a.sort()
print(a)
a.sort(reverse=True)
print(a)      

輸出結果:

['aaa', 'ddd', 'rrr']
['rrr', 'ddd', 'aaa']      

若清單内包含兩種類型的資料時,sort()排序會報錯;

a = ["aaa","bbb",131,223,4,1,14]
a.sort()
print(a)      

輸出結果:

Traceback (most recent call last):
  File "D:\Python\Test\Source\venv\05_study_test.py", line 2, in <module>
    a.sort()
TypeError: '<' not supported between instances of 'int' and 'str'      

3.2 臨時性排序

若是需要保留原來的排列順序,并且以特定的順序呈現出來,可以使用函數sorted(),也支援傳入參數reverse=True進行反向排序;

sorted()函數也隻能支援單一的類型資料進行排序,否則會報類型錯誤;

a = [131,223,4,1,14]
print(sorted(a))
print(a)      

輸出結果:

[1, 4, 14, 131, 223]
[131, 223, 4, 1, 14]      

3.3 反轉輸出清單元素

反轉輸出指的是以現在的元素順序進行反向輸出;

a = [131,223,4,1,14]
a.reverse()
print(a)      

輸出結果:

[14, 1, 4, 223, 131]      

3.4 确認清單長度

使用len()函數确認清單長度,傳回值為int類型;

a = [131,223,4,1,14]
b = len(a)
print(a)
print(type(b))      

輸出結果:

[131, 223, 4, 1, 14]
<class 'int'>      

4、索引錯誤

在清單的元素查詢比較容易出現的錯誤為索引錯誤;

a = [131,223,4,1,14]
print(a[10])      

輸出結果:

Traceback (most recent call last):
  File "D:\Python\Test\Source\venv\05_study_test.py", line 2, in <module>
    print(a[10])
IndexError: list index out of range      

如上代碼,索引錯誤最常見的引發原因為清單索引超出範圍;

5、周遊清單

周遊清單:對清單中的每個元素執行相同的操作;此行為在代碼中被稱為循環操作,是以我們可以使用for循環來執行周遊操作;

5.1 for循環周遊清單

循環非常重要,可以自動完成重複的工作;

a = [131,223,4,1,14]
for i in a:
    print(i)      

輸出結果:

131
223
4
1
14      

如上代碼所示,以變量 i 的不同指派來輸出清單 a 中元素的值,最後使用print()列印;

for循環每次重複操作結束自動執行換行,可以傳遞參數end=""修改結束符号是否需要換行;

a = [131,223,4,1,14]
for i in a:
    print(i,end=",")      

輸出結果:

131,223,4,1,14,      

6、縮進錯誤與冒号缺失

Python根據縮進判斷代碼行與前一個代碼行的關系;

6.1 縮進錯誤

主要出現以下幾種情況:

  • 忘記代碼縮進;
  • 不必要的縮進;
  • 錯誤的縮進;
a = [131,223,4,1,14]      

輸出結果:

File "D:\Python\Test\Source\venv\05_study_test.py", line 1
    a = [131,223,4,1,14]
IndentationError: unexpected indent      

縮進錯誤,出現意想不到的縮進;

6.2 冒号缺失

a = [131,223,4,1,14]
for i in a
    print(i,end=",")      

輸出結果:

File "D:\Python\Test\Source\venv\05_study_test.py", line 2
    for i in a
              ^
SyntaxError: expected ':'      

文法錯誤,缺少冒号;

7、數字清單

若是需要存儲一些有規律的數字,那麼直接通過清單的編寫就顯得十分繁瑣,是以Python提供了很多的函數,來高效的完成此工作;

7.1 使用range()函數

函數 range() 能夠較快的生成一系列數字;

代碼格式:

range(起始元素,結束元素,步長)      

需要注意的是結束數字為開區間,無法取值,若需要取值結束數字加1即可;

for i in range(1,9,2):
    print(i)      

輸出結果:

1
3
5
7      

使用range()函數建立清單;

ls1 = list(range(0,10))
print(ls1)      

輸出結果:

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

7.2 數字清單的統計計算

通過清單計算其元素最大值、最小值、總和;

ls1 = list(range(0,10))
print(ls1)
a = max(ls1)
b = min(ls1)
c = sum(ls1)
print(a,b,c)      

輸出結果:

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

8、清單中的一部分

處理Python中的一部分元素被稱為切片;

8.1 切片

代碼格式:

[起始元素 : 結束元素 : 步長]      

切片與range函數一樣,結尾取值需要加1;切片的周遊也可以直接使用for循環,與清單的周遊方式完全一緻(切片後的資料相當于清單的一個子清單)

ls1 = list(range(0,10))
print(ls1)
print(type(ls1))
a = ls1[1:3]
print(a)      

輸出結果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<class 'list'>
[1, 2]      

結尾取值如下:

ls1 = list(range(0,10))
print(ls1)
a = ls1[1:3]
print(a)
b = ls1[1:3+1]
print(b)      

輸出結果:

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

8.2 複制清單

由于切片的參數,起始元素與結束元素不定義時,則以為全部切片,等同于複制操作;

ls1 = list(range(0,10))
print(ls1)
a = ls1[:]
print(a)      

輸出結果:

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

9、元組

在使用Python中有時候我們需要建立一些列不可修改的元素,元組就可以滿足這個需求,元組将元素變為不可變類型;

9.1 元組與周遊

代碼格式:

(起始元素 : 結束元素 : 步長)      

元組看起來與清單一樣,使用小括号進行辨別,索引方式與清單完全一緻,唯一的差別是元素不可修改;

tp1 = tuple(range(0,10))
print(tp1)
print(type(tp1))      

輸出結果:

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
<class 'tuple'>      

元組的周遊與清單完全一緻;

for i in tp1[0:3]:
    print(i)      
0
1
2