python-常用數據類型(列表)-List

1.列表相加,拼接兩個列表

l1 = [1, 2, 3]
l2 = [4, 5, 6]
print(l1+l2)

# 輸出結果 [1, 2, 3, 4, 5, 6]

2.重複n次列表(乘法)

l1 = [1, 2, 3]
n = 3
print(l1 * n)

# 輸出結果 [1, 2, 3, 1, 2, 3, 1, 2, 3]

3.判斷元素x是否在列表中

l1 = [1, 2, 3]
x = 1
# x在l1中返回True 不在返回False
print(x in l1)  # 輸出結果 True 說明x在列表l1中

# x在l1中返回False 不在返回True
x = '1'
print(x not in l1)  # 輸出結果 True 說明x不在列表l1中
4.截取列表
l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
n = 2
m = 7
# 從下標n開始截取,到下標m,包頭不包尾
print(l1[n:m])  # 輸出結果 [3, 4, 5, 6, 7]

# 從開頭截取到下標m  不包含m下標
print(l1[:m])  # 輸出結果  [1, 2, 3, 4, 5, 6, 7]

# 從下標n開始截取到結尾  包含n下標
print(l1[n:])  # 輸出結果  [3, 4, 5, 6, 7, 8, 9]

5.插入

# 在列表的結尾追加元素
l1 = [1, 2, 3]
l1.append(10)
print(l1)  # 輸出結果  [1, 2, 3, 10]

# 在列表的結尾追加列表
l1 = [1, 2, 3]
l1.append([4,5,6])
print(l1)  # 輸出結果 [1, 2, 3, [4, 5, 6]]

# append會把整個列表(元素和容器一起加到原列表的結尾),只要元素不要容器的寫法
l1 = [1, 2, 3]
l1.extend([4, 5, 6])
print(l1)  # 輸出結果 [1, 2, 3, 4, 5, 6]

# 在指定下標插入元素,原來的元素往後移
l1 = [1, 2, 3]
l1.insert(1, 333)
print(l1)  # 輸出結果 [1, 333, 2, 3]

# 在指定下標插入列表,原來的元素往後移
l1 = [1, 2, 3]
l1.insert(1, [4, 5, 6])
print(l1)  # 輸出結果 [1, [4, 5, 6], 2, 3]

6.移除元素

# 移除下標爲n元素
l1 = [1, 2, 3]
n = 0
l1.pop(n)  # 返回值是被移除的元素,如果不傳參數就是移除最後一個元素
print(l1)  # 輸出結果 [2, 3]

# 移除值爲n的元素,如果元素不存在出現錯誤,ValueError: list.remove(x): x not in list
l1 = [1, 2, 3]
n = 3
l1.remove(n)
print(l1)  # 輸出結果  [1, 2]

# 清空列表
l1 = [1, 2, 3]
l1.clear()
print(l1)  # 輸出結果 []

7.查詢列表元素

# 查詢元素k在列表中第一次出現的下標
l1 = [1, 2, 3, 2]
k = 2
print(l1.index(k))  # 輸出結果1

# 查詢元素k,在下標n開始,下標m結束的切片中,第一次出現的下標,切片不包含下標m
l1 = [1, 2, 3, 2, 5, 2, 4, 3]
k = 2
n = 2
m = 6
print(l1.index(k, n, m))  # 輸出結果 3

# 獲取列表的長度
l1 = [1, 2, 3]
print(len(l1))  # 輸出結果 3

# 獲取列表的最大值
l1 = ['1', '2', '3', '4']
print(max(l1))  # 輸出結果 4

# 獲取列表的最小值
l1 = [1, 2, 3, 4]
print(min(l1))  # 輸出結果 1
# 獲取最大值和最小值的時候列表元素的數據類型必須一致

# 獲取元素n在列表中出現的次數
l1 = [1, 2, 3, 2, 5, 2, 4, 3]
n = 2
print(l1.count(n))  # 輸出結果 3

8.列表排序

# 反轉列表,把列表中的元素倒敘輸出
l1 = [1, 2, 3, 2, 5, 2, 4, 3]
l1.reverse()
print('反轉後的列表{}:'.format(l1))  # 輸出結果 [3, 4, 2, 5, 2, 3, 2, 1]

# 實現列表的排序
# 升序排序
# 方法1
l1 = [1, 2, 3, 2, 5, 2, 4, 3]
l2 = sorted(l1)
print(l2)  # 輸出結果 [1, 2, 3, 2, 5, 2, 4, 3]

# 方法2
l1 = [1, 2, 3, 2, 5, 2, 4, 3]
l1.sort()
print(l1)

# 降序排序
# 方法1
l1 = [1, 2, 3, 2, 5, 2, 4, 3]
l2 = sorted(l1, reverse=True)
print(l2)
# 方法2
l1 = [1, 2, 3, 2, 5, 2, 4, 3]
l1.sort(reverse=True)
print(l1)

9.深拷貝和淺拷貝

# 淺拷貝
ol = [1, [4, 5, 6]]
scl = ol.copy()
print('原列表id:{},淺拷貝列表id:{},\n原列表裏不可變數據類型id:{},淺拷貝列表裏不可變數據類型id:{},\n原列表裏可變數據類型id:{},\
淺拷貝可變數據類型id:{}\n'.format(id(ol), id(scl), id(ol[0]), id(scl[0]), id(ol[1]), id(scl[1])))
'''輸出結果
    原列表id:3096901038912,淺拷貝列表id:3096900331136,
    原列表裏不可變數據類型id:140729886164640,淺拷貝列表裏不可變數據類型id:140729886164640,
    原列表裏可變數據類型id:3096900337920,淺拷貝可變數據類型id:3096900337920
'''
scl[1][0] = 7
print(ol, scl)  # 輸出結果  [1, [7, 5, 6]] [1, [7, 5, 6]]

print('原列表id:{},淺拷貝列表id:{},\n原列表裏不可變數據類型id:{},淺拷貝列表裏不可變數據類型id:{},\n原列表裏可變數據類型id:{},\
淺拷貝可變數據類型id:{}\n'.format(id(ol), id(scl), id(ol[0]), id(scl[0]), id(ol[1]), id(scl[1])))
'''輸出結果
    原列表id:3096901038912,淺拷貝列表id:3096900331136,
    原列表裏不可變數據類型id:140729886164640,淺拷貝列表裏不可變數據類型id:140729886164640,
    原列表裏可變數據類型id:3096900337920,淺拷貝可變數據類型id:3096900337920
'''
scl[1] = [3, 5, 6]
print(ol, scl)  # 輸出結果 [1, [7, 5, 6]] [1, [3, 5, 6]]
print('原列表id:{},淺拷貝列表id:{},\n原列表裏不可變數據類型id:{},淺拷貝列表裏不可變數據類型id:{},\n原列表裏可變數據類型id:{},\
淺拷貝可變數據類型id:{}\n'.format(id(ol), id(scl), id(ol[0]), id(scl[0]), id(ol[1]), id(scl[1])))
'''輸出結果
    原列表id:3096901038912,淺拷貝列表id:3096900331136,
    原列表裏不可變數據類型id:140729886164640,淺拷貝列表裏不可變數據類型id:140729886164640,
    原列表裏可變數據類型id:3096900337920,淺拷貝可變數據類型id:3096901137152
'''
scl[0] = 3
print(ol, scl)  # 輸出結果 [1, [7, 5, 6]] [3, [3, 5, 6]]
print('原列表id:{},淺拷貝列表id:{},\n原列表裏不可變數據類型id:{},淺拷貝列表裏不可變數據類型id:{},\n原列表裏可變數據類型id:{},\
淺拷貝可變數據類型id:{}\n'.format(id(ol), id(scl), id(ol[0]), id(scl[0]), id(ol[1]), id(scl[1])))
'''輸出結果
    原列表id:3096901038912,淺拷貝列表id:3096900331136,
    原列表裏不可變數據類型id:140729886164640,淺拷貝列表裏不可變數據類型id:140729886164704,
    原列表裏可變數據類型id:3096900337920,淺拷貝可變數據類型id:3096901137152
'''
# 深拷貝
import copy
ol = [1, [4, 5, 6]]
dcl = copy.deepcopy(ol)
print('原列表id:{},深拷貝列表id:{},\n原列表裏不可變數據類型id:{},深拷貝列表裏不可變數據類型id:{},\n原列表裏可變數據類型id:{},\
深拷貝可變數據類型id:{}\n'.format(id(ol), id(dcl), id(ol[0]), id(dcl[0]), id(ol[1]), id(dcl[1])))
'''輸出結果
    原列表id:3096901181824,深拷貝列表id:3096901038912,
    原列表裏不可變數據類型id:140729886164640,深拷貝列表裏不可變數據類型id:140729886164640,
    原列表裏可變數據類型id:3096901332288,深拷貝可變數據類型id:3096900337920
'''
dcl[1][0] = 3
print(ol, dcl)  # 輸出結果 [1, [4, 5, 6]] [1, [3, 5, 6]]
print('原列表id:{},深拷貝列表id:{},\n原列表裏不可變數據類型id:{},深拷貝列表裏不可變數據類型id:{},\n原列表裏可變數據類型id:{},\
深拷貝可變數據類型id:{}\n'.format(id(ol), id(dcl), id(ol[0]), id(dcl[0]), id(ol[1]), id(dcl[1])))
'''輸出結果
    原列表id:3096901181824,深拷貝列表id:3096901038912,
    原列表裏不可變數據類型id:140729886164640,深拷貝列表裏不可變數據類型id:140729886164640,
    原列表裏可變數據類型id:3096901332288,深拷貝可變數據類型id:3096900337920
'''
'''總結淺拷貝和深拷貝的區別
    淺拷貝:新建一個列表,裏面的元素還是會指向相同的內存地址,
           如果修改列表裏面的可變數據類型,修改一個另外一個也會跟着改變,例如這個 scl[1][0] = 7
           但是如果是這樣改 scl[1] = [3, 5, 6] 是不會相互影響的,我個人理解是這樣相當於新建了一個對象,而不是修改。
           修改列表裏面的不可變數據類型也不對另一個列表產生影響
    深拷貝:真正獲取一個對象的複製實體,而不是引用,所以前後兩個列表沒有任何聯繫
    以上是我個人的看法,希望有大神指出其中的錯誤
'''

10.多維列表

# 多維列表   實質上還是一個簡單列表,只不過列表的元素仍然是一個列表
multiList = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
# 訪問多維列表
print(multiList[0])  # 輸出結果 [1, 2, 3]
print(multiList[2][2])  # 輸出結果 8

想要了解更多可以查看 python中文文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章