您好,登錄后才能下訂單哦!
列表可以使用所有適用于序列的標準操作,例如索引、分片、連接和乘法。但列表還有一些屬于自己的操作,如修改列表本身的操作,這些操作包括元素賦值、元素刪除、分片賦值以及下一節要將的列表方法。
如果要修改列表中的某一個元素,可以像使用數組一樣對列表中的特定元素賦值,也就是使用一對中括號指定元素在列表中的索引,然后使用賦值運算符(=)進行賦值。
本例修改了列表s中的前兩個元素值。
s = ["Bill", "Mike", "John"]
s[0] = "Mary"
s[1] = 20
print(s) # 運行結果:['Mary', 20, 'John']
程序運行結果如下圖所示。
在上面的代碼中,通過列表的元素賦值操作,修改了列表s中的前兩個的元素,第1個元素修改成了“Mary”,第2個元素修改成了20。
在列表元素賦值的操作中,列表索引可以是負數,在這種情況下,會從列表最后一個元素開始算起。例如,s[-1]表示倒數第1個列表元素,s[-2]表示倒數第2個列表元素。不過不管列表索引使用正數還是負數,都不能超過索引范圍,否則會拋出異常。
本例使用超過列表索引范圍的索引,會拋出異常。
s = ["Bill", "Mike", "John"]
s[-1] = "Mary" # 修改列表最后一個元素值
print(s) # 運行結果:['Bill', 'Mike', 'Mary']
s[3] = "Peter" # 索引3超出了列表s的索引范圍(-3到2),會拋出異常
s[-3] = "蜘蛛俠" # 索引-3是列表s的第1個元素,相當于s[0]
print(s) # 運行結果:['蜘蛛俠', 'Mike', 'Mary']
s[-4] = "鋼鐵俠" # 索引-4超出了列表s的索引范圍(-3到2),會拋出異常
程序運行結果如下圖所示。
從列表中刪除元素也很容易,使用del語句就可以做到。
numbers = [1,2,3,4,5,6,7,8]
del numbers[2] # 刪除列表numbers中的第3個元素
分片賦值和分片獲取子列表一樣,也需要使用分片操作,也就是需要指定要操作的列表的范圍。
本例將利用分片賦值將列表中的子列表替換成其他列表。并使用list函數將字符串分解成由字符組成的列表,并替換字符串中的某一部分。
s = ["hello", "world","yeah"]
s[1:] = ["a","b","c"] # 將列表s從第2個元素開始替換成一個新的列表
print(s) # 運行結果:['hello', 'a', 'b', 'c']
name = list("Mike") # 使用list函數將“Mike”轉換成由字符組成的列表
print(name) # 運行結果:['M', 'i', 'k', 'e']
name[1:] = list("ary") # 利用分片賦值操作將“Mike”替換成了“Mary”
print(name) # 運行結果:['M', 'a', 'r', 'y']
程序運行結果如下圖所示。
上面的代碼使用了分片賦值對原列表進行了賦值操作,我們可以看到,分片賦值是用另一個列表來修改原列表中的子列表。也就是將原列表中的子列表替換成另外一個子列表。而且在賦值時,被替換的子列表和新的子列表可以不等長。例如,["world","yeah"]可以被替換為['a', 'b', 'c']。
可能有很多讀者會想到,我們可以利用這個特性在列表中插入一個列表,或刪除一些列表元素。
本例將利用分片賦值在列表numbers中插入一個列表,并刪除一些列表元素。
numbers = [1,6,7]
# 在列表numbers中插入一個列表,運行
numbers[1:1] = [2,3,4,5]
print(numbers)
numbers[1:4] = []
print(numbers)
程序運行結果如下圖所示。
在上面的代碼中,使用分片賦值操作在列表numbers中的1和6之間插入了列表[2,3,4,5]。numbers[1:1]中冒號(:)前面的數字表示要替換的子列表的第1個元素在父列表中的索引,而冒號后面的數字表示子列表下一個元素在父列表中的索引,所以冒號前后兩個數字相等,表示不替換列表中的任何元素,直接在冒號前面的數字表示的索引的位置插入一個新的列表。最后使用分片賦值將第2、3、4個元素值替換成了空列表,所以最后numbers列表的值是[1,5,6,7]。
《Python從菜鳥到高手》已經出版,開始連載了,購買送視頻課程
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。