文章目錄
- 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