天天看點

Python程式設計基礎:清單及序列基本操作(二)

作者:青少年程式設計CodeTeen

序列的加法運算

同一類型的序列可以進行加法運算,實作兩個序列合并為一個序列。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = list1 + list2
print(list3) #結果:[1, 2, 3, 4, 5, 6]           

序列的乘法運算

序列和一個正整數n相乘,可以将序列重複n次并合并為新的序列。

list1 = ['a', 'b', 'c']
list2 = list1 * 2
print(list2) #結果:['a', 'b', 'c', 'a', 'b', 'c']           

清單的專用操作

一、更新清單中元素的值

清單是可變序列,元素的值是可以修改的。

list1 = [1, 2, 3]
list1[1] = 5 #第二個元素值改為5
print(list1) #結果:[1, 5, 3]           

也可以同時修改多個元素的值,使用切片擷取要修改的多個元素。

list1 = [1, 2, 3, 4, 5, 6]
list1[1:4] = [7, 8, 9]
print(list1) #結果:[1, 7, 8, 9, 5, 6]           

二、删除清單元素

删除清單的元素可以有以下多種方法。

  1. del指令
list1 = [1, 2, 3, 4, 5, 6]
#删除指定的元素
del list1[1] #删除第二個元素
print(list1) #結果:[1, 3, 4, 5, 6]

del list1[:2] #删除前2個元素
print(list1) #結果:[4, 5, 6]

del list1 #删除整個清單
print(list1) #清單已經删除,會報錯:NameError: name 'list1' is not defined           
  1. pop()方法

清單的pop()方法可以删除指定索引的元素,如果未指定索引,則删除最後一個元素。

list1 = [1, 2, 3, 4, 5, 6]
list1.pop(0) #删除第一個元素 
print(list1) #結果:[2, 3, 4, 5, 6]

list1.pop() #删除最後一個元素 
print(list1) #結果:[2, 3, 4, 5]           
  1. remove()方法

清單的remove()方法可以删除指定值的第一個元素。如果值不在清單中,會報錯。

list1 = [1, 2, 3,1, 5, 6]
list1.remove(1) #删除清單中第一個1
print(list1) #結果:[2, 3, 1, 5, 6]

list1.remove(9) #删除清單中的9,由于不包含中清單中,會報錯:ValueError: list.remove(x): x not in list

#為了程式不出現錯誤,可以在remove之前增加值是否在清單中的判斷
if 9 in list1:
    list1.remove(9)
    print(list1)
else:
    print('list1不包含9') #結果:list1不包含9           
  1. clear()方法

清單的clear()方法可以清除清單中的所有元素,清單變成空清單。

list1 = [1, 2, 3,1, 5, 6]
list1.clear()
print(list1) #結果:[]           

三、增加元素

可以在清單後面新加一個元素,也可以在任意位置插入一個元素。

  1. 使用append()方法在清單後增加元素

格式:list_name.append(item)

說明:list_name是清單的名稱;item是要增加的元素,可以是數字、字元串,也可以是清單、元組等。

list1 = [1, 2, 3]
list1.append(4)
print(list1) #結果:[1, 2, 3, 4]

list1.append([5, 6, 7])
print(list1) #結果:[1, 2, 3, 4, [5, 6, 7]]           
  1. 使用insert()方法在清單指定位置插入元素

格式:list_name.insert(index, item)

說明:list_name是清單的名稱;index是索引,item是要插入的元素。index如果超出清單的索引最大值,并不會出錯,而是在清單最後增加元素。

list1 = [1, 2, 3]
list1.insert(0, 8)
print(list1) #結果:[8, 1, 2, 3]

list1.insert(3, 9)
print(list1) #結果:[8, 1, 2, 9, 3]

list1.insert(15, 10)
print(list1) #結果:[8, 1, 2, 9, 3, 10]           

四、查找元素

  1. 使用index()查找元素在清單中的位置,傳回元素的索引

格式:list_name.index(item, start, end)

說明:list_name是清單的名稱;item是要查找的内容;start是開始位置索引;end是結束位置索引。start和end可以不提供,代表在整個清單中查找。

清單中如果有多個元素比對,傳回的是查找到的第一個元素的索引。

如果item不包含在清單中,則會發生ValueError錯誤。

list1 = list('python')
i = list1.index('y')
print(i) #結果:1

list1.index('z') #ValueError: 'z' is not in list           
  1. 使用count()統計元素在清單中的數量

格式:list_name.count(item)

說明:統計item在清單list_name中出現的次數,如果清單中找不到item,則傳回0

list1 = list('hello')
cnt = list1.count('l')
print(cnt) #結果:2
print(list1.count('a')) #結果:0           

五、清單元素的排序

  1. 使用sort()方法對清單進行排序

格式:list_name.sort(cmp=None, key=None, reverse= False)

說明:sort()方法用于對清單進行排序,直接修改原清單,不傳回新的清單,傳回值為None。預設是升序排序,如果要降序排序,可以設定reverse為True。

list1 = list('ahobek')
list1.sort()
print(list1) #結果:['a', 'b', 'e', 'h', 'k', 'o']

list1.sort(reverse=True) #降序排序
print(list1) #結果:['o', 'k', 'h', 'e', 'b', 'a']           
  1. 使用sorted()内置函數對清單進行排序

sorted()是内置函數,可以對包括清單在内的序列進行排序,會傳回新的清單,不改變原序列。

格式:sorted(iterable, cmp=None, key=None, reverse=False)

說明:iterable是可疊代對象(如清單等序列);reverse為True時代表降序排序。

list1 = [1, 4, 2, 10, 54, 18]
list2 = sorted(list1)
print(list2) #結果:[1, 2, 4, 10, 18, 54]

list3 = sorted(list1, reverse=1) #降序排序
print(list3)  #結果:[54, 18, 10, 4, 2, 1]           
  1. 使用reverse()方法對清單的元素前後颠倒

格式:list_name.reverse()

reverse()方法并不對清單進行排序,隻是颠倒元素,即第一個元素調到最後一個,第二個調到倒數第二個,以此類推。

reverse()在原清單中操作,不傳回新的清單,傳回值為None。

list1 = [1, 4, 2, 10, 54, 18]
list1.reverse()
print(list1) #結果:[18, 54, 10, 2, 4, 1]