豬行天下之Python基礎——3.2 列表 & 元組

coder-pig發表於2019-04-03

內容簡述:

  • 1、列表
  • 2、元組

1、列表

列表、元組和字串因為成員有序,可以通過下標訪問,又稱為「序列」。列表有序內容長度可變,使用中括號[]表示元素間用逗號分隔,元素的資料型別可以不一樣!列表的相關的操作有:「元素訪問,切片,修改,追加,插入,刪除,擴充套件,統計,排序,下標獲取,拷貝


① 列表建立

直接把元素放在中括號[]中,用逗號進行分隔,比如:

data_list = [1,2,0,"a",True]
複製程式碼

② 訪問列表元素

列表是有序的,可以通過「下標索引」來訪問列表中的元素,可以從左開始索引,也可以從右開始索引。從左開始索引的下標範圍:[0, 列表長度-1]從右開始索引的下標範圍:[-1, 列表長度],如果索引下標不在範圍裡的話,會報陣列越界錯誤!程式碼示例如下:

num_list = [1,2,3,4,5]
print(num_list[0])
print(num_list[-3])
print(num_list[5])
複製程式碼

執行結果如下

1
3
IndexError: list index out of range
複製程式碼

③ 列表切片

通過索引的方式只能獲取一個元素,如果想獲取多個元素呢?只能通過多個下標先獲取多個元素
再另外拼接一個列表麼?當然不用,Python為我們提供了強大的「切片操作」。通過「:(冒號)分割前後索引來實現,要注意索引的邊界是顧頭不顧尾,比如a[1:3],包含的是a[1],a[2],不包含a[3]!詳細用法示例如下:

num_list = [0123456789]

# 擷取[0,2)間的資料,輸出結果:[0, 1]
print(num_list[0:2])

# 擷取[1,9],輸出結果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
print(num_list[1:])

# 擷取[0,7],輸出結果:[0, 1, 2, 3, 4, 5, 6, 7]
print(num_list[:-2])

# 擷取所有元素,輸出結果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(num_list[:])

# 擷取[0,10)的元素,步長為2,輸出結果:[0, 2, 4, 6, 8]
print(num_list[0:10:2])

# 擷取[2,10)的元素,步長為3,輸出結果:[2, 5, 8]
print(num_list[2::3])
複製程式碼

④ 更新、追加、插入列表元素

更新 列表元素 直接通過下標索引獲得對應元素進行修改 即可,比如上面的num_list,修改第二個元素的值只需:num_list[1] = 'xxx',另外,如果你不知道修改的元素下標索引是哪一個,但是你知道元素的值,可以先通過 index("元素的值") 找到對應的下標索引值,再去修改元素的值。

追加列表元素可以通過 append函式 在列表的表位追加一個元素,比如num_list呼叫append(10)後,追加後列表裡的元素就變成了 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10]。append函式只是在隊尾插入一個元素,如果想插入到特定位置則需要使用insert函式 了。引數有兩個,插入的下標位置(從0開始)插入元素值。比如num_list呼叫insert(3, 2.5)後的列表:[0, 1, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 10]


⑤ 刪除列表元素

刪除這裡要分清楚是「想刪除整個列表」還是「刪除列表裡某個元素」,程式碼示例如下:

num_list = [012345]

# remove()直接對列表中的元素進行檢索刪除,根據值不是下標,返回刪除後的列表
num_list.remove(2)
print(num_list)

# del()根據下標進行檢索刪除,不返回刪除值
del num_list[2]
print(num_list)

# pop()根據下標進行檢索刪除,不填下標預設刪除最後一項,返回刪除值
num_list.pop()
print(num_list)

# 刪除列表引用
del num_list
print(num_list)
複製程式碼

執行結果如下

[0, 1, 3, 4, 5]
[0, 1, 4, 5]
[0, 1, 4]
NameError: name 'num_list' is not defined
複製程式碼

⑥ 列表遍歷

可以通過迴圈對列表進行遍歷,遍歷的方式有多種,程式碼示例如下:

num_list = [0, 1, 2, 3, 4, 5]

for num in num_list:
    print(num, end='\t')

for index in range(0len(num_list)):
    print(num_list[index], end='\t')

for indexvalue in enumerate(num_list):
    print('index = %d values = %d' % (indexvalue))
複製程式碼

複製程式碼

執行結果如下

0    1    2    3    4    5    

0    1    2    3    4    5    

index = 0 values = 0
index = 1 values = 1
index = 2 values = 2
index = 3 values = 3
index = 4 values = 4
index = 5 values = 5
複製程式碼

⑦ 列表的其他操作

除了上面的這些常用操作外,還有一些其他的操作,使用程式碼示例如下:

a_list = [12.0'a'True]
b_list = [329411]

# 列表指令碼操作符:可以使用+號組合列表,*號重複列表
print(a_list + a_list)
print(a_list * 2)

# 判斷元素是否在列表中
print('a' in a_list)

# 獲得列表長度
print('列表長度:%d' % len(a_list))

# 統計元素在列表中出現的次數,True的值也是1
print('列表中1出現的次數 %d' % a_list.count(1))

# 統計最大值,最小值,列表元素型別需要為數字
print('列表中的最大值 %d' % max(b_list))
print('列表中的最小值 %d' % min(b_list))

# 排序,本地排序(會修改值),返回None,只能比較數字!預設從小到大,
# 從大到小可以用可選引數,括號里加上key = lambda x:-1*x
b_list.sort()
print('升序排列:%s' % b_list)
b_list.sort(key=lambda x: -1 * x)
print('降序排列:%s' % b_list)

# 列表元素反轉,會修改列表,返回None
a_list.reverse()
print('反轉後的列表:%s' % a_list)

# extend()函式,在列表末尾一次性追加另一個列表中的多個值
a_list.extend(b_list)
print("追加後的列表:",a_list)
複製程式碼

執行結果如下

[12.0'a'True12.0'a'True]
[12.0'a'True12.0'a'True]
True
列表長度:4
列表中1出現的次數 2
列表中的最大值 11
列表中的最小值 2
升序排列:[234911]
降序排列:[119432]
反轉後的列表:[True'a'2.01]
追加後的列表: [True'a'2.01119432]
複製程式碼

4、元組(Tuple)

元組,「受限的列表」,元組中的元素不能修改,使用()小括號 表示。如果元組中只有一個元素,需要在元素後新增逗號,比如(1,),否則會被當做括號運算子使用!!!比起列表,元組佔用更少的記憶體,常會用作不能修改的引數傳遞給函式。除了沒有修改元素的函式外,其他的函式和列表基本一致,還提供了一個tuple()函式用於:將字串和列表轉換為元組

另外還有一點要注意:

如果在新建變數的時候,沒有小括號包裹,只用逗號分隔,Python也會把這個變數認做元組,比如:a = 1,2,3,4,如果此時呼叫print(type(a)),輸出的結果會是:<class 'tuple'>


如果本文對你有所幫助,歡迎
留言,點贊,轉發
素質三連,謝謝?~


相關文章