list的基礎操作
阿新 • • 發佈:2018-11-11
names = ["張三", "李四", "王五", "趙六"]
1、增
names.append("liyang") # 向列表後面追加
print(names)
#輸出結果:['張三', '李四', '王五', '趙六', 'liyang']
names.insert(1, "wu") # 插入到指定的位置,下標1
print(names)
#輸出結果:['張三', 'wu', '李四', '王五', '趙六', 'liyang']
2、刪
3、改# 刪 names.remove("li") #刪除所有值為li的元素 # del names[0] 效果等價於 names.pop(0) names.pop() # 如果不給定index,會預設刪除列表尾部的元素
names[2] = "li"
print(names)
4、查
print(names[1], names[2]) #檢視下標為1,2的元素
print(names[0:3]) # 切片,列印下標為0,1,2的元素
print(names[:3]) # 和上一句一樣,當從第一個元素開始時,下標可以省略
print(names[-1]) # 負數是指從右邊開始取數
print(names[-2]) # 輸出倒數第二個
print(names[-2:-1]) # 只輸出倒數第二個,因為列表左閉右開的特點
print(names[-2:]) # 倒數第二個一直到最後的元素
5、根據元素內容返回下標
print("王五的下標:", names.index("王五"))
# 統計元素出現的次數
print("王五出現的次數:", names.count("王五"))
6、翻轉與排序
# 翻轉
names.reverse()
# 排序
names.sort()
7、將其他的列表合併過來(追加效果)
names2 = [1, 2, 3]
names.extend(names2)
print(names, names2)
# 輸出:['wu', '張三', '王五', '趙六', 1, 2, 3] [1, 2, 3]
8、列表的深淺copy問題
9、列表的迴圈與切片names1 = ["張三", "李四", [1, 2, 3], "王五", "趙六"] names2 = names1.copy() # 淺copy,只做第一層的copy,可以理解為內層list此處放的是一個記憶體地址 print(names1, names2) names1[0] = "wu" names1[2][2] = 4 # 修改,會影響names2的內層list,無論修改names1還是names2 print(names1) print(names2) names3 = names1 # 指向同一塊記憶體(改一處,其他的也會變),和普通的字串初始化不一樣(克隆,並不指向同一地方) ## 使用深copy,使兩者的操作完全的不互相影響 # 要引入 copy模組 import copy names4 = copy.deepcopy(names1) names1[2][2] = 3 print(names1) print(names4) #輸出: ['張三', '李四', [1, 2, 3], '王五', '趙六'] ['張三', '李四', [1, 2, 3], '王五', '趙六'] ['wu', '李四', [1, 2, 4], '王五', '趙六'] ['張三', '李四', [1, 2, 4], '王五', '趙六'] ['wu', '李四', [1, 2, 3], '王五', '趙六'] ['wu', '李四', [1, 2, 4], '王五', '趙六']
names4=['wu', '李四', [1, 2, 4], '王五', '趙六']
print(names4[0:-1:2]) #步長為2
# 上述語句可以寫成 print(names4[::2])
for i in names4:
print(i)
#輸出:
['wu', [1, 2, 4]]
wu
李四
[1, 2, 4]
王五
趙六