1. 程式人生 > >Python從菜鳥到高手(11):列表的基礎操作

Python從菜鳥到高手(11):列表的基礎操作

刪除 範圍 獲取 png john 修改列 以及 列表 -o

  列表可以使用所有適用於序列的標準操作,例如索引、分片、連接和乘法。但列表還有一些屬於自己的操作,如修改列表本身的操作,這些操作包括元素賦值、元素刪除、分片賦值以及下一節要將的列表方法。

1. 列表元素賦值

  如果要修改列表中的某一個元素,可以像使用數組一樣對列表中的特定元素賦值,也就是使用一對中括號指定元素在列表中的索引,然後使用賦值運算符(=)進行賦值。

  本例修改了列表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),會拋出異常

程序運行結果如下圖所示。

技術分享圖片

2. 刪除列表元素

  從列表中刪除元素也很容易,使用del語句就可以做到。

numbers = [1,2,3,4,5,6,7,8]
del numbers[2]     # 刪除列表numbers中的第3個元素

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從菜鳥到高手》已經出版,開始連載了,購買送視頻課程

Python從菜鳥到高手(11):列表的基礎操作