1. 程式人生 > >python基礎學習筆記——列表及元組

python基礎學習筆記——列表及元組

列表

列表的介紹       

  列表是python的基礎資料型別之一 ,其他程式語言也有類似的資料型別.

列表的索引和切片

列表和字串一樣也擁有索引:

lst = ['劉德華','周潤發','周杰倫','向華強']
print(lst[0])  # 列表中第一個元素
print(lst[1])  # 列表中第二個元素
print(lst[2])  # 列表中第三個元素
 
注意:列表是可以進行修改的,這裡和字串不一樣
 
lst[3] = '王健林'
print(lst)
 
 
s = '王思聰'
s[0] = ''
print(s)
 
結果:
Traceback (most recent call last):
  File 
"D:/python_object/path2/test.py", line 1076, in <module> s[0] = '' TypeError: 'str' object does not support item assignment

列表的切片:

lst = ["麻花藤", "王劍林", "馬芸", "周鴻醫", "向華強"]
print(lst[0:3])     # ['麻花藤', '王劍林', '馬芸']
print(lst[:3])      # ['麻花藤', '王劍林', '馬芸']
print(lst[1::2])    # ['王劍林', '
周鴻醫'] 也有步長 print(lst[2::-1]) # ['馬芸', '王劍林', '麻花藤'] 也可以倒著取 print(lst[-1:-3:-2]) # 倒著帶步長

 

列表的增刪改查

1. 增 

注意  list和str是不一樣的. lst可以發生改變. 所以直接就在原來的物件上進行了操作

追加模式

lst = ["麻花藤", "林俊傑", "周潤發", "周芷若"]
print(lst)
lst.append("wusir")
print(lst)

 

插入模式

lst = ["麻花藤", "
張德忠", "孔德福"] lst.insert(1, "劉德華") # 在1的位置插入劉德華. 原來的元素向後移動一位 print(lst)

迭代新增

# 迭代新增
lst = ["王志文", "張一山", "苦海無涯"]
lst.extend(["麻花藤", "麻花不疼"])
print(lst)

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)
 
結果:
[]

修改

索引切片修改

# 修改
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.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 

列表的巢狀

注意:採用降維操作,一層一層的看就好

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)

 

元祖

元祖:俗稱不可變的列表,又被成為只讀列表,元祖也是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)
 
結果:
今天姐姐不在家
姐夫和小姨子在客廳聊天
姐夫問小姨子稅後多少錢
小姨子說和姐夫還提錢