1. 程式人生 > >list的基礎操作

list的基礎操作

names = ["張三", "李四", "王五", "趙六"]

1、增

names.append("liyang")  # 向列表後面追加
print(names)
#輸出結果:['張三', '李四', '王五', '趙六', 'liyang']
names.insert(1, "wu")  # 插入到指定的位置,下標1
print(names)
#輸出結果:['張三', 'wu', '李四', '王五', '趙六', 'liyang']
2、刪
# 刪
names.remove("li") #刪除所有值為li的元素

# del names[0] 效果等價於 names.pop(0)
names.pop()  # 如果不給定index,會預設刪除列表尾部的元素
3、改
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問題
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], '王五', '趙六']
9、列表的迴圈與切片
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]
王五
趙六