Python數據類型之列表及其操作
列表由以系列按特定順序排列的元素組成,列表不同於元組和字符串的地方:列表是可變的。
列表是有序集合,列表是序列的一種
列表的基本操作
1.修改列表:給元素賦值
colour = [‘red‘,‘white‘,‘blue‘]
colour[0]=‘yellow‘
colour[1]=‘yellow‘
print(colour)
>>> [‘yellow‘, ‘yellow‘, ‘blue‘]
# 最簡單通過下標(索引)修改。
2.給切片賦值
colour = [‘red‘,‘white‘,‘blue‘] colour[2:] = [‘yellow‘,‘black‘] print(colour) >>>[‘red‘, ‘white‘, ‘yellow‘, ‘black‘]
#覆蓋掉了第三個元素,並且改變了列表的長度
可以通過切片在不替換原有元素的情況下插入新元素
colour = [‘red‘,‘white‘,‘blue‘] colour[2:2] = [‘yellow‘,‘black‘] print(colour) >>>[‘red‘, ‘white‘, ‘yellow‘, ‘black‘, ‘blue‘]
還可以通過切片刪除特定元素
colour = [‘red‘,‘white‘,‘blue‘,‘yellow‘,‘black‘] colour[1:3] = [] print(colour) >>>[‘red‘, ‘yellow‘, ‘black‘]
#沒有刪除第四個元素 (回顧序列通用操作,切片)
3.刪除元素
3.1 del方法(需要指定刪除元素的位置)
colour = [‘red‘,‘white‘,‘blue‘,‘yellow‘,‘black‘] del colour[3] print(colour) >>>[‘red‘, ‘white‘, ‘blue‘, ‘black‘]
刪除切片元素
colour = [‘red‘,‘white‘,‘blue‘,‘yellow‘,‘black‘] del colour[1:3] print(colour) >>>[‘red‘, ‘yellow‘, ‘black‘]
#與切片賦值空列表效果一致
3.2 pop方法會移除列表中的一個元素(默認是最後一個),並返回該元素的值。
n = [‘to‘,‘be‘,‘do‘,‘in‘,‘be‘,‘not‘,‘bee‘] print(n.pop()) >>> bee
也可指定元素位置
n = [‘to‘,‘be‘,‘do‘,‘in‘,‘be‘,‘not‘,‘bee‘] print(n.pop(3)) >>> in
pop方法是唯一一個既能修改列表又返回元素值(除了None)的列表方法。pop後也可以跟對象位置,刪除指定位置的元素。等於(del listname [x])。
3.3 remove方法用於移除列表中某個值的第一個匹配項。
n = [‘to‘,‘be‘,‘do‘,‘in‘,‘be‘,‘not‘,‘bee‘] n.remove(‘be‘) print(n) >>>[‘to‘, ‘do‘, ‘in‘, ‘be‘, ‘not‘, ‘bee‘]
4.增加,插入元素
4.1 append方法用於在列表末尾追加新的對象
colour = [‘white‘,‘red‘,‘black‘,‘blue‘,‘green‘] colour.append(‘yellow‘) print(colour) >>>[‘white‘, ‘red‘, ‘black‘, ‘blue‘, ‘green‘, ‘yellow‘]
#它不是簡單地返回一個修改過的新列表,而是直接修改原來的列表。
4.2 extend方法可以在列表的末尾一次性追加另一個序列中的多個值。
a = [1,2,3] b = [4,5,6] a.extend(b) print(a) print(b) >>>[1, 2, 3, 4, 5, 6] >>>[4, 5, 6]
看起來很像連接(相加)操作,兩者最主要的區別在於:extend方法修改了被擴展的序列(即a),而原始的連接操作則不然,它會返回一個全新的列表。
a = [1,2,3] b = [4,5,6] x=a+b print(x) print(a) print(b) >>>[1, 2, 3, 4, 5, 6] >>>[1, 2, 3] >>>[4, 5, 6] #或者a = a +b
4.3 insert方法用於將對象插入到列表中(必須指定元素位置)
num = [1,2,3,5,6,7] num.insert(3,‘four‘) print(num) >>>[1, 2, 3, ‘four‘, 5, 6, 7]
5.clear方法用就地清空列表的內容
num = [1,2,3,5,6,7] num.clear() print(num) >>> []
#類似於切片賦值list[:]=[]
6.copy 方法用於復制列表
常規復制只是將另一個名關聯到列表
a = [1,2,3] b = a b[1] = 4 print(a) >>> [1, 4, 3]
要讓a和b指向不同的列表,就必須將b關聯到a的副本。
a = [1,2,3] b = a.copy() b[1] = 4 print(a) print(b) >>>[1, 2, 3] >>>[1, 4, 3]
7.count 方法用於計算指定的元素在列表中出現了多少次
n = [‘to‘,‘be‘,‘do‘,‘in‘,‘be‘,‘not‘,‘bee‘] print(n.count(‘be‘)) >>> 2
8.index方法用於在列表中查找指定值第一次出現的索引。
n = [‘to‘,‘be‘,‘do‘,‘in‘,‘be‘,‘not‘,‘bee‘] print(n.index(‘be‘)) >>> 1
9.reverse方法將列表中的元素反向存放
colour = [‘white‘,‘red‘,‘black‘,‘blue‘,‘green‘] colour.reverse() print(colour) >>>[‘green‘, ‘blue‘, ‘black‘, ‘red‘, ‘white‘]
sort方法用於在原位置對列表進行排序(排序規則?),在‘原位置排序’意味著改變原來的列表,從而讓其中的元素能按一定的順序排列,而不是簡單地返回一個已排序的列表副本。
x = [3,6,1,8,2,5,7,4] x.sort() print(x) >>>[1, 2, 3, 4, 5, 6, 7, 8] x = [3,6,1,8,2,5,7,4] print(x.sort()) >>> None
#sort修改x且不返回任何值,最終的結果是x是經過排序的,而y包含None x = [3,6,1,8,2,5,7,4] y=x.sort() print(x) print(y) >>>[1, 2, 3, 4, 5, 6, 7, 8] >>>None
當需要一個排好序的列表副本,同時又保留原有列表不變的時候,需先把x的副本賦值給y,然後對y進行排序.
x = [3,6,1,8,2,5,7,4] y=x[:] #得到包含了x所有元素的分片 或 y = x.copy() y.sort() print(x) print(y) >>>[3, 6, 1, 8, 2, 5, 7, 4] >>>[1, 2, 3, 4, 5, 6, 7, 8]
Python數據類型之列表及其操作