python 列表全家桶(典藏版)


三歲和你一起學編程,最白的白話和你一起學!

什麼是列表

列表(list)是包含0個或多個對象引用的有序序列,屬於序列類型。
列表長度內容可以自由變換,列表的增加,刪除,變換都比較方便,沒有長度限制,元素類型也可以隨意,使用靈活。
列表是序列中經常使用,而且較爲方便的一種。

列表的創建

列表是存儲任意數據類型的集合,用[ ] 來表示開始和結束,各個元素之間採用逗號隔開。
實例;

>>> list1 = [] #創建空列表
>>> list2 = [1, 2, 3] #創建數字型列表
>>> list3 = ['三歲', '學', '編程']#創建字符串型列表
>>> list4 = ['三歲', 1, '編程', 2]#創建混合型列表
特點說明:
  • 列表名 = [元素1, 元素2,……]
  • 列表可以無元素,稱爲空列表,長度爲0
  • 列表中的數據類型爲任意,可以不同
  • 列表可以使用len() 函數取得類表長度
  • 列表可以修改長度也會隨之改變
len() 函數的實例
>>>len(list1)
>0
>>>len(list2)
>3
>>>len(list3)
>3
>>>len(list4)
>4
list() 函數說明

list() 函數和int() 函數相似,可以把其他類型的內容轉換爲列表
但是不是所有的數據類型都可以主要的字符串和元組
其中 整型和浮點型是絕對不行的

#判定整型和浮點型
>>>print(type(list(12))) #type() 檢測數據類型
>TypeError: 'int' object is not iterable
>>>print(type(list(12.0)))
>TypeError: 'flost' object is not iterable
#查看元組和字符串產生的結果及類型
>>>print(type(list()))
><class 'list'>
>>>print(list())
>[]
>>>print(type(list('三歲學編程')))
><class 'list'>
>>>print(list('三歲學編程'))
>['三', '歲', '學', '編', '程']

列表切片

切片就如同燒菜時把菜切片取得其中一部分的操作。
列表的切片是通過索引的方式來訪問所需要的內容

切片索引

切片的索引分爲順序索引與逆序索引

  順序索引第一位從0開始往後遞推
  逆序索引最後一位從-1開始往前遞推

來,上圖,簡明易懂
在這裏插入圖片描述

列表元素訪問

列表元素用[ ]進行訪問,通過[ : ]來獲取響應的元素或元素塊
此處也符合前閉後開原則
emmm
話不多說,上例子

list1 = ['三', '歲', '學', '編', '程']

>>>print(lsit1[0])#0位的內容
>>>>print(lsit1[1])#1位置上的內容
>>>>print(lsit1[:])#全部的內容
>['三', '歲', '學', '編', '程']
>>>print(lsit1[2:5])#位置2-4上的內容(合前閉後)
>['學', '編', '程']

>>>print(lsit1[::-1])#步長爲-1,列表倒序輸出
>['程', '編', '學', '歲', '三']
>>>print(list1[::2])#步長爲2
>['三', '學', '程']

>>>print(lsit1[2:])#2位置後面的全部內容
>['學', '編', '程']
>>>print(lsit1[-2:])#-2位置後面的全部內容
>['編', '程']

>>>print(lsit1[:-2])#輸出-2位置前的內容,不包括-2位
>['三', '歲', '學']
>>>print(list1[:2])#輸出2位置前的內容不包括2
>['三', '歲']

整理:

  • [a: b :c] a爲初始位置,b爲結束位置(不包含),c爲步長
  • [ ] 之間不能爲空
  • [ : ] 爲冒號,省略其他內容爲全部
  • [a] 爲a位置的內容
  • [a:]爲a位置開始後面所有的內容
  • [:b]爲b前面所有的內容,不包括b
  • [::c]步長爲c,如果是-1則反向輸出

**注意正序是從0開始的 * 3(重要的話說3遍)

切片示例

利用for循環,len() 函數,把內容分行輸出

list1 = ['三', '歲', '學', '編', '程']
for i in list1:  #循環list1列表
    print(f'{i}')
print(f'共有{len(list1)}個元素')使用format函數(小編的是3.7.4的可以用縮寫)
# print('{}'.format(i)) #非縮寫
#print('共有{}個元素'.format(len(list1)))
結果:
三
歲
學
編
程
共有5個元素

列表中元素的查找

列表中的元素怎麼查找?

in 和 not in

python 提供了in 和 not in 來判斷元素是否在列表中
in判斷:在返回 True 不在 返回False
not in判斷:不在返回True 在返回False

list1 = ['三', '歲', '學', '編', '程']
i = '三'
j = '叄'
print(i in list1)
print(j in list1)
print(i not in list1)
print(j not in list1)
結果:
True
False
False
True
index() 函數

index() 函數是查看列表中的某值的第一個匹配項
使用方法:list.index(obj)
列表.index(元素) 結果:返回元素的第一個匹配值
如果沒有值則會報錯

list1 = ['三', '歲', '學', '編', '程']
i = '三'
j = '叄'
print(list1.index(i))
print(list1.index(j))
結果
0
ValueError: '叄' is not in list

該函數只匹配第一位!!!

替換列表元素

使用切片把指定位置的內容進行賦值即可
ls[ i : j : z ]

list1 = ['三', '歲', '學', '編', '程']

list1[0] = '叄'
print(list1)
結果:
['叄', '歲', '學', '編', '程']

list1[0:2] = '三叄'
print(list1)
結果:
['三', '叄', '學', '編', '程']

list1[::2] = '三歲學'
print(list1)
結果:
['三', '歲', '歲', '編', '學']

添加列表元素

小編所知添加方式共有4中

  • 自加 ls += lt
  • append()
  • exted()
  • insert()
自加 ls += lt

ls += lt 等同於 ls = ls + lt

list1 = ['三', '歲', '學']
list2 = ['編', '程']
list1 +=list2
print(list1)
結果
['三', '歲', '學', '編', '程']
------------------------------
list1 = ['三', '歲', '學']
list2 = ['編', '程']
list1 = list1 + list2
print(list1)
結果
['三', '歲', '學', '編', '程']
append() 函數

append() 函數是在列表最後添加一個元素
使用方法:ls.append(x) 在ls列表後加上元素x

list1 = ['三', '歲', '學', '編']
list1.append('程')
print(list1)
結果:
['三', '歲', '學', '編', '程']

注意:加在最後!!!

extend() 函數

extend() 函數 在列表最後添加多個元素 與自加+= 類似但是更推薦
使用方法:ls.extend(lt) 在列表最後添加lt內容

list1 = ['三', '歲', '學']
list1.extend(['編','程'])
print(list1)
結果:
['三', '歲', '學', '編', '程']

注意:也是加在最後!!! 添加內容爲一個字符串或一個列表

insert() 函數

insert() 函數在列表指定位置添加一個函數
使用方法:ls.insert(i,x) 在ls列表的i位置添加元素x

list1 = ['三',  '學', '編', '程']
list1.insert(1,'歲')
print(list1)
結果:
['三', '歲', '學', '編', '程']

注意:位置從0開始計數 ,添加一個元素

元素重複輸出——*=

*=和+=類似
ls *= n 使 列表元素重複n次

list1 = ['三']
list1 *= 3
print(list1)
結果:
['三', '三', '三']

列表內容刪除

del方法

del常用的刪除方式,但是完全刪除!!!
del ls[i:j] 等價於 ls[i:j] = [] 刪除i到j
def ls[i:j:z] 刪除i到j步長爲z的內容

list1 = ['三', '歲', '學', '編', '程']

del list1[0]
print(list1)
結果
['歲', '學', '編', '程']

del list1[0:3]
print(list1)
結果:
['編', '程']

del list1[::2]
print(list1)
結果:
['歲', '編']

注意:此次是前開後開,第i位到第j位

pop() 函數

pop() 函數把第i項中的元素取出並刪除默認爲-1(暨最後一位)

list1 = ['三', '歲', '學', '編', '程']
list1.pop()
print(list1)
list1.pop(2)
print(list1)
a = list1.pop()
print(a)
結果:
['三', '歲', '學', '編']
['三', '歲', '編']

注意:因爲是先提取後輸出所以有返回值
該內容較複雜,請您細品,細細品

remove() 函數

remove() 函數把某元素的第一個值進行刪除,無返回值
使用方法:ls.remove(lt) 把ls列表中第一個lt元素刪除

list1 = ['三', '歲', '學', '編', '程']
list1.remove('歲')
print(list1)
結果:
['三', '學', '編', '程']

注意:刪除第一個,如果要全部刪除需要進行循環
如果沒有所要刪除元素會報錯

clear() 函數

clear() 函數 輸出整個列表的元素
使用方法:ls.clear()

list1 = ['三', '歲', '學', '編', '程']
list1.clear()
print(list1)
結果:
[]

###列表計算

最大值 max() 函數

max() 函數 有返回值,返回值爲最大值
使用方法:max(list) 返回lsit的最大值

list1 = ['三', '歲', '學', '編', '程']
print(max(list1))
list2 = [16, 13, 28, 58, 85, 91]
print(max(list2))
結果:
編
91

emmm爲什麼是編字呢???
難道它的筆畫多???
nonono
這個是根據他的Unicode編碼的值來決定的(比Ascii編碼範圍廣量大)

最小值 min() 函數

min() 函數返回最小值
使用方法:同max()

list1 = ['三', '歲', '學', '編', '程']
print(min(list1))
list2 = [16, 13, 28, 58, 85, 91]
print(min(list2))
結果:
三
13
求和 sum()

sum() 函數,返回最小值
使用方法:sum(list,i) 返回list的和,如果有i參數就在最後結果中加上

list2 = [16, 13, 28, 58, 85, 91]
print(sum(list2))
print(sum(list2, 100))
結果
291
391

注意:不支持字符串求和

列表排序

sort() 函數

對列表進行排序,可以是正序也可以是降序
使用方法:list.sort(self=None,key=None,reverse =False)
self,key方法比較複雜
self 可選,使用該參數的方法進行排序
key 可選,yonglai比較,只有一個具體參數
reverse True降序,False升序

list2 = [16, 13, 28, 58, 85, 91]
list2.sort()
print(list2)
list2.sort(reverse=True)
print(list2)
結果:
[13, 16, 28, 58, 85, 91]
[91, 85, 58, 28, 16, 13]
reverse() 函數

reverse() 函數 對序列進行反向排序
使用方法:list.reverse() 直接改變list類表的元素順序

list2 = [16, 13, 28, 58, 85, 91]
list2.reverse()
print(list2)
結果:
[91, 85, 58, 28, 13, 16]

注意:不能夠選擇正序或倒敘,只能夠反向排序

list[::-1] 切片

通過切片獲取

list1 = ['三', '歲', '學', '編', '程']
>>>print(lsit1[::-1])#步長爲-1,列表倒序輸出
>['程', '編', '學', '歲', '三']

列表的嵌套

列表中的元素可以是各種類型的那麼列表呢?
emmm
我肚子裏面有一個我自己???
感覺怪怪的
但是貌似肚子裏面的不是我自己
列表是可以嵌套的
使用方法:
列表名=[[元素1,元素2,…],[元素1,元素2, …],…… ]

list1 = [['三', '歲'], ['學', '編', '程']]
嵌套列表的讀取

emmm和列表一樣的
就多了一層

list1 = [['三', '歲'], ['學', '編', '程']]
print(list1[0])
print(list1[0][0])
print(list1[0][0:2])
print(list1[1][2])
結果:
['三', '歲']['三', '歲']

自己理解一下吧
不懂的留言吧,在線解答

嵌套列表的遍歷

可以採用循環語句和嵌套循環語句
來獲取

list1 = [['三', '歲'], ['學', '編', '程']]
for i in list1:
    print(i)

結果
['三', '歲']
['學', '編', '程']

-------------------
list1 = [['三', '歲'], ['學', '編', '程']]
lt = 0
for i in list1:
    for j in list1[lt]:
        print(j,end = ' ')
    lt += 1
    print()
結果:
三 歲 
學 編 程

列表的基礎及函數就先到這裏,例子比較多,大家細品,細細品。

小編辛苦,但是感覺挺值,點個贊,鼓勵一下
收藏一波,下次就刷不到啦!!!
謝謝大咖!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章