萬惡之源 - Python資料型別二
列表的增刪改查
1. 增
注意 list和str是不一樣的. lst可以發生改變. 所以直接就在原來的物件上進行了操作
追加模式
lst = ["麻花藤", "林俊傑", "周潤發", "周芷若"] print(lst) lst.append("wusir") print(lst)
練習
輸入使用者資訊,新增到列表中
lst = [] while True: content = input("請輸入你要錄入的員工資訊, 輸入Q退出:") if content.upper() == 'Q': break lst.append(content) print(lst)
插入模式
lst = ["麻花藤", "張德忠", "孔德福"] lst.insert(1, "劉德華")# 在1的位置插入劉德華. 原來的元素向後移動一位 print(lst)
迭代新增
# 迭代新增 lst = ["王志文", "張一山", "苦海無涯"] lst.extend(["麻花藤", "麻花不疼"]) print(lst)
練習
寫程式碼,有如下列表,按照要求實現每一個功能 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] 計算列表的長度並輸出 列表中追加元素"seven",並輸出新增後的列表 請在列表的第1個位置插入元素"Tony",並輸出新增後的列表 請修改列表第2個位置的元素為"Kelly",並輸出修改後的列表 請將字串s = "qwert"的每一個元素新增到列表li中,一行程式碼實現,不允許迴圈新增。
2. 刪除
pop 通過下標刪除元素(預設刪除最後一個)
lst = ["麻花藤", "王劍林林", "李李嘉誠", "王富貴"] print(lst) lst.pop() deleted = lst.pop() print('被刪除的',deleted) print(lst) el = lst.pop(2)# 刪除下標位2的元素 print(el)# 被刪除的元素 print(lst)
remove通過元素刪除
lst = ["麻花藤", "王劍林", "李嘉誠", "王富貴"] lst.remove('王劍林') print(lst) 結果: ['麻花藤', '李嘉誠', '王富貴'] lst.remove('哈哈')# 刪除不存在的元素 結果: Traceback (most recent call last): File "D:/python_object/path2/test.py", line 1115, in <module> lst.remove('哈哈')# 刪除不存在的元素 ValueError: list.remove(x): x not in list
clear 清空
lst = ["麻花藤", "王劍林", "李嘉誠", "王富貴"] lst.clear() print(lst) 結果: []
練習
寫程式碼,有如下列表,按照要求實現每一個功能 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] 請刪除列表中的元素"ritian",並輸出新增後的列表 請刪除列表中的第2個元素,並輸出刪除的元素和刪除元素後的列表 請刪除列表中的第2至4個元素,並輸出刪除元素後的列表
修改
索引切片修改
# 修改 lst = ["太白", "太黑", "五色", "銀王", "⽇天"] lst[1] = "太汙"# 把1號元素修改成太汙 print(lst) lst[1:4:3] = ["麻花藤", "哇靠"]# 切片修改也OK. 如果步長不是1, 要注意. 元素的個 數 print(lst) lst[1:4] = ["我是哪個村的村長王富貴"]# 如果切片沒有步長或者步長是1. 則不用關心個數 print(lst)
查詢
列表是一個可迭代物件,所以可以進行for迴圈
lst = ["麻花藤", "王劍林", "李嘉誠", "王富貴"] for i in lst: print(i) 結果: 麻花藤 王劍林 李嘉誠 王富貴
練習
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] 將列表li中第三個元素修改成'taibai' 將列表li中第四個元素修改成'女神' 將列表li中前三個元素修改成'alex1,alex2,alex3'
其他操作
反轉
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] li.reverse()# 把這個列表進行調轉 print(li)
排序
li = [1,2,3,4,84,5,2,8,2,11,88,2] li.sort()# 升序 排序 print(li) li.sort(reverse=True)# 降序 排序 print(li)
統計
li = [1,2,3,4,84,5,2,8,2,11,88,2] num = li.count(3)# 統計元素3出現的次數,和字串中功能一樣 print(num)
通過元素獲取下標
li = [1,2,3,4,84,5,2,8,2,11,88,2] n = li.index(5) print(n)
獲取長度
li = [1,2,3,4,84,5,2,8,2,11,88,2] print(len(li)) 結果: 12
練習
li = [1,3,6,9,2,4,6,8] 1.將以上這個列表中進行反轉 2.將以上這個列表中進行降序排列 li = ["alex", "wusir", "taibai"] 利用下劃線將列表的每一個元素拼接成字串"alex_wusir_taibai"
列表的巢狀
注意:採用降維操作,一層一層的看就好
lst = [1,'太白','wusir',['麻花疼',['可口可樂'],'王健林']] # 找到wusir print(lst[2]) # 找到太白和wusir print(lst[1:3]) # 找到太白的白字 print(lst[1][1]) # 將wusir拿到,然後首字母大寫 在扔回去 s = lst[2] s = s.capitalize() lst[2] = s print(lst) # 簡寫 lst[2] = lst[2].capitalize() print(lst) # 把太白換成太黑 lst[1] = lst[1].replace('白','黑') # 把麻花疼換成麻花不疼 lst[3][0] = lst[3][0].replace('疼','不疼') print(lst) # 在可口可樂後邊新增一個雪碧 lst[3][1].append('雪碧') print(lst)
練習
寫程式碼,有如下列表,按照要求實現每一個功能。 lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] 將列表lis中的"tt"變成大寫(用兩種方式)。 將列表中的數字3變成字串"100"(用兩種方式)。 將列表中的字串"1"變成數字101(用兩種方式)。
元祖
元祖:俗稱不可變的列表,又被成為只讀列表,元祖也是python的基本資料型別之一,用小括號
括起來,裡面可以放任何資料型別的資料,查詢可以,迴圈也可以,切片也可以.但就是不能改.
tu = ('我','怎麼','這麼','可愛') tu1 = tu[0]# 記性下標 print(tu1) for i in tu: print(i)# 進行for迴圈 tu2 = tu[0:3] print(tu2)# 進行切片 結果: Traceback (most recent call last): File "D:/python_object/path2/test.py", line 1286, in <module> tu[0] = '你' NameError: name 'tu' is not defined
關於不可變, 注意: 這里元組的不可變的意思是子元素不可變. 而子元素內部的子元素是可以變, 這取決於子元素是否是可變物件.
元組中如果只有一個元素. 一定要新增一個逗號, 否則就不是元組
tu = (1) print(type(tu)) 結果: <class 'int'>
元祖巢狀
tu = ('今天姐姐不在家','姐夫和小姨子在客廳聊天',('姐夫問小姨子稅後多少錢','小姨子說和姐夫還提錢')) tu1 = tu[0] tu2 = tu[1] tu3 = tu[2][0] tu4 = tu[2][1] print(tu1) print(tu2) print(tu3) print(tu4) 結果: 今天姐姐不在家 姐夫和小姨子在客廳聊天 姐夫問小姨子稅後多少錢 小姨子說和姐夫還提錢
range
翻譯過來就是範圍,那我們我來先看下.
range(0,5,1) 引數第一個是範圍的起始位置 引數第二個是範圍的結束位置 引數第三個是步長
print(range(0,5)) # 結果: range(0, 5)#一個範圍 # 我們可以通過list方法來轉換這個範圍來檢視一下 l = list(range(0,5)) print(l) # 結果: [0, 1, 2, 3, 4] l = list(range(0,5,2)) print(l) # 結果: [0, 2, 4]# 這個結果就會發現和我之前用步長獲取的內容是相識的,是的他就是步長
練習
利用for迴圈和range打印出下面列表的索引。 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] 利用for迴圈和range找出100以內所有的偶數並將這些偶數插入到一個新列表中 利用for迴圈和range 找出50以內能被3整除的數,並將這些數插入到一個新列表中 利用for迴圈和range從100~1,倒序列印 利用for迴圈和range,將1-30的數字一次新增到一個列表中,並迴圈這個列表,將能被3整除的數改成*。