1. 程式人生 > >列表及元組

列表及元組

clas rep type 切片 返回值 可變對象 aid bject sign

一.列表的介紹:

列表是Python數據類型之一, 其他編程語言也有類似的數據類型.比如JS中的數組,java中的數組等等,他是以 [] 括起來,每個元素用 ‘,‘ 隔開,而且可以存放各種數據類型

1 lst = [1,"lx","我是",[1,,"長時間啊"],("我叫元組",123,"lx"),"cde",{"我叫字典":48,"字典":"你好啊"},{"我叫集合","集合"}]

列表相比於字符串. 不僅可以存放不同的數據類型. ?且可以存放?量的數據. 32位 python可以存放: 536870912個元素, 64位可以存放: 1152921504606846975個元素.?且列 表是有序的(按照你保存的順序),有索引, 可以切??便取值.

1.1 列表的索引與切片

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

例如:

 1 = [麻花騰,馬雲,王健林,許家印,雷軍,劉強東]
 2 print(lst[0])  # 獲取第一個元素
 3 print(lst[1])  # 獲取第二個元素
 4 lst[0] = 馬化騰
 5 print(lst)  # 註意. 列表是可以發?改變的. 這?和字符串不?樣
 6 # s = "第一"
 7 # s[0] = "我"
 8 # print(s)  # 字符串不能改變原字符串
 9 # TypeError: ‘str‘ obje
10 
11 結果
12 麻花騰
13 馬雲
14 [
馬化騰, 馬雲, 王健林, 許家印, 雷軍, 劉強東]

列表的切片:

 1 lst = [麻花騰,馬雲,王健林,許家印,雷軍,劉強東]
 2 print(lst[0:3])
 3 print(lst[:3])
 4 print(lst[::2]) #列表也有步長
 5 print(lst[::-1])  #也能到著取
 6 print(lst[-1:-5:-1])  #到著帶步長
 7 
 8 #結果
 9 [麻花騰, 馬雲, 王健林]
10 [麻花騰, 馬雲, 王健林]
11 [麻花騰, 王健林, 雷軍]
12
[劉強東, 雷軍, 許家印, 王健林, 馬雲, 麻花騰] 13 [劉強東, 雷軍, 許家印, 王健林]

?. 列表的增刪改查

1. 增, 註意, list和str是不?樣的. lst可以發?改變. 所以直接就在原來的對象上進?了操 作

1 lst = [麻花騰,馬雲,王健林,許家印,雷軍,劉強東]
2 lst.append("戴和順")
3 lst.insert(1,"戴和順")
4 lst.extend(["李嘉誠"]) #在原列表中末尾處追加一個序列,該序列中的所有元素都會被添加至願列表的末尾,返回值為None
5 print(lst)

2. 刪除

pop() , remove(), clear(), del

1 lst = [麻花騰,馬雲,王健林,許家印,雷軍,劉強東]
2 lst1 = lst.pop(0) #pop() 利用索引刪除元素,並返回該元素
3 print(lst1)
4 lst.remove("麻花騰")  #直接刪除裏面元素
5 lst.clear()  # 清空列表
6 del lst[1:3]  #  del 與切片類似
7 print(lst)

3. 修改

索引切片修改

1 lst = [麻花騰,馬雲,王健林,許家印,雷軍,劉強東]
2 lst[0] = 馬化騰
3 lst[1:4:2] = "mayun","wangjianlin"  #切?修改也OK. 如果步?不是1, 要註意. 元素的個數
4 lst[1:5] = ["ninainaidetui"]  #如果切?沒有步?或者步?是1. 則不?關?個數
5 print(lst)

4. 查詢, 列表是?個可叠代對象, 所以可以進?for循環

1 lst = [麻花騰,馬雲,王健林,許家印,雷軍,劉強東]
2 for et in lst:
3     print(et)

5. 其他操作

1 lst = [1,2,5,9,6,7,2,5]
2 c = lst.count(2)  # 查詢次數
3 print(c)
4 lst.sort()  #按從小到大的順序排列
5 lst.sort(reverse=True) # 按從大到小的順序排列
6 lst.reverse()  #翻轉
7 print(lst)
8 print(len(lst))  #列表長度

三. 列表的嵌套

采?降維操作.?層?層的看就好.

lst = [麻花騰,馬雲,王健林,[xujiayin,王尼瑪,[‘樸槿惠,奧巴馬,特朗普],普金],雷軍,劉強東]
#查詢樸槿惠
print(lst[3][2][0])
#找到特朗普和奧巴馬
print(lst[3][2][1:])
#將xujiayin首字母大寫在放進去
lst[3][0] = lst[3][0].capitalize()
print(lst)
#把特朗普換成特步鋪
lst[3][2][2] = "特步鋪"
print(lst)
#將麻給成馬
lst[0] = lst[0].replace("","")
print(lst)
#將特朗普給成傻逼
lst[3][2][2] = lst[3][2][2].replace("","傻逼")
print(lst)
lst[3][2].append("金正恩")
print(lst)

結果
樸槿惠
[奧巴馬, 特朗普]
[麻花騰, 馬雲, 王健林, [Xujiayin, 王尼瑪, [‘樸槿惠, 奧巴馬, 特朗普], 普金], 雷軍, 劉強東]
[麻花騰, 馬雲, 王健林, [Xujiayin, 王尼瑪, [樸槿惠, 奧巴馬, 特步鋪], 普金], 雷軍, 劉強東]
[馬花騰, 馬雲, 王健林, [Xujiayin, 王尼瑪, [樸槿惠, 奧巴馬, 特步鋪], 普金], 雷軍, 劉強東]
[馬花騰, 馬雲, 王健林, [Xujiayin, 王尼瑪, [樸槿惠, 奧巴馬, 特步傻逼], 普金], 雷軍, 劉強東]
[馬花騰, 馬雲, 王健林, [Xujiayin, 王尼瑪, [樸槿惠, 奧巴馬, 特步傻逼, 金正恩], 普金], 雷軍, 劉強東]

四. 元組和元組嵌套

元組: 俗稱不可變的列表.?被成為只讀列表, 元組也是python的基本數據類型之?, ??括 號括起來, ??可以放任何數據類型的數據, 查詢可以. 循環也可以. 切片也可以. 但就是不能 改.

tu = (麻花騰,馬雲,王健林,許家印,雷軍,劉強東)
print(tu)
print(tu[0])
print(tu[4])
print(tu[2:5]) #切片之後還是元組

# for循環打印元組
for el in tu:
    print(el)
# 嘗試修改元組
# tu[0] = "馬化騰"
# print(tu)  #TypeError: ‘tuple‘ object does not support item assignment
# 報錯  元組不能修改
# tu[1] = ["你"]  # 這樣改也不行
# print(tu)
# tu[0].append("馬化騰") #不能修改
# print(tu)

結果
(麻花騰, 馬雲, 王健林, 許家印, 雷軍, 劉強東)
麻花騰
雷軍
(王健林, 許家印, 雷軍)
麻花騰
馬雲
王健林
許家印
雷軍
劉強東

關於不可變, 註意: 這?元組的不可變的意思是?元素不可變. ??元素內部的?元素是可 以變, 這取決於?元素是否是可變對象.

元組中如果只有?個元素. ?定要添加?個逗號, 否則就不是元組 例如: tu = (5,) 空元組 tu = tuper()

元組也有count(), index(), len()等?法.

五. range

 1 lst = [麻花騰,馬雲,王健林,許家印,雷軍,劉強東]
 2 # 獲取列表索引,拿到索引之後,可以拿到元素
 3 for el in range(len(lst)):
 4     print(el)
 5     print(lst[el])
 6 
 7 結果
 8 0
 9 麻花騰
10 1
11 馬雲
12 2
13 王健林
14 3
15 許家印
16 4
17 雷軍
18 5
19 劉強東

列表及元組