python序列——快速學會如何使用列表,及其騷操作

2020-08-08 22:47:49

8.2 列表

  • 什麼是列表?

  • 列表和C語言,Java中的陣列類似,它是python中的一種參照數據型別

  • 不同於陣列的是,陣列只能存放一種數據型別,而列表可以存放不同類型的數據型別

  • 其不僅具有堆疊的性質,還附有佇列的性質,應用非常的靈活,同樣也是python中序列的一種

  • 列表的字面量定義方法用[]

list1 = []  # 這樣就可以直接定義了一個空列表
list2 = [1,2,True,"str",1.0] 
  • 列表的常用方法:
方法 描述
list.append(x) 把一個元素新增到列表的結尾,相當於 a[len(a):] = [x]。
list.extend(L) 通過新增指定列表的所有元素來擴充列表,相當於 a[len(a):] = L。
list.insert(i, x) 在指定位置插入一個元素。第一個參數是準備插入到其前面的那個元素的索引,例如 a.insert(0, x) 會插入到整個列表之前,而 a.insert(len(a), x) 相當於 a.append(x) 。
list.remove(x) 刪除列表中值爲 x 的第一個元素。如果沒有這樣的元素,就會返回一個錯誤。
list.pop([i]) 從列表的指定位置移除元素,並將其返回。如果沒有指定索引,a.pop()返回最後一個元素。元素隨即從列表中被移除。(方法中 i 兩邊的方括號表示這個參數是可選的,而不是要求你輸入一對方括號,你會經常在 Python 庫參考手冊中遇到這樣的標記。)
list.clear() 移除列表中的所有項,等於del a[:]。
list.index(x) 返回列表中第一個值爲 x 的元素的索引。如果沒有匹配的元素就會返回一個錯誤。
list.count(x) 返回 x 在列表中出現的次數。
list.sort() 對列表中的元素進行排序。
list.reverse() 倒排列表中的元素。
list.copy() 返回列表的淺複製,等於a[:]。
  • 列表方法解析

list1 = []  # 列表的定義
list2 = list()  # 這樣也可以定義一個空列表

#  增加數據

list1.append(1)  # 在列表的尾部追加一個數據
print(list1)

list2.append("hello")

# list1.extend(list2)  # 實現列表的拼接

list1 = list1 + list2  # 實現列表的拼接,單獨使用時會引起pycharm的一些小bug,不影響程式執行

print(list1)
list2.insert(0, 1.5)

# 第一個參數是索引位置,第二個是要插入的值,在該位置插入後,其餘的元素會自動往後移一位
print(list2)

# list2[2] = "你好"    # 不支援 index out of range

print("=" * 35)

# 查詢讀取

print(list1[0])  # 通過索引讀取列表的值
print(list1[-1])  # 除了從前往後讀取,還支援從後往前讀取  -可以取到最後一位

print(list2.index("hello"))  # 查詢列表中是否包含某個元素,如包含則返回索引,不包含則報錯
print("=" * 35)

# 刪除

a = list2.pop()  # 當不指定參數時預設取出最後一個,這裏有點像堆疊,後進先出,同時取出來的元素可以用變數接收
# 當指定參數時,取出對應索引位置上的元素

print(a)
print(list2)

list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1]

list2.remove(1)  # 從左往右,如果找到目標就將其刪除,而且只會刪除一個目標,如果沒有找到就會返回一個錯誤,
print(list2)

list2.clear()  # 清空列表
print(list2)
print("=" * 35)

# 其他方法

list2 = [1, 2, 3, 4, 5, "6", 7, 8, 6, 6, "9"]

print(list2.count("1"))  # 統計某元素的個數,不會報錯,不存在則返回0
print(list2.count(6))  # 2 存在則返回其個數

list1 = list2.copy()  # 複製一個列表,做備份時會用到
print(list1)

list1.remove("6")
list1.remove("9")
list1.sort()  # 對列表元素進行排序(預設升序排序),如果列表元素有多種不同數據型別的數據則會報錯
print(list1)

list2.sort(key=int)  # 如果硬要對不同數據型別的元素進行排序的話就要指定,就要指定參數key作爲比較依據
print(list2)

list2.sort(key=int, reverse=True)  # 如果要進行降序排序,則給reverse參數 設定爲 True
print(list2)

list2.reverse()  # 翻轉列表
print(list2)

  • 列表的切片與字串切片用法一致

  • 列表是序列,所以它是有序可以迭代的,可以用for回圈進行遍歷

  • 列表推導式,小技巧

# 切片
list1 = [1, 2, 3, 45, 7, 8, 9]

li2 = list1[0:-1]

print(li2)

#  遍歷
for item in li2:
    print(item)

# 其他技巧(python分別新手和老手一看便知)

# 列表推導式

li3 = [i for i in range(10)]  # 快速建立一個 0 ~ 9的列表
print(li3)

li4 = [i for i in range(100) if i % 2 == 0]  # 快速建立一個列表,0~99內的偶數
print(li4)

li5 = [i * 10 for i in range(1, 10)]  # 建立一個列表其元素爲 10,20,30,40....90
print(li5)