1 什么是串列
串列是一組有序的元素組成,元素本身沒有限制,元素與元素之間也沒有任何關系,在Python中用方括號[]表示串列
串列的特性:可變、有序
2 串列相關操作
2.1 訪問單個串列元素
串列是有序的,因此可以通過串列的索引訪問串列的元素,特別注意索引是從0開始的,示例如下:
names = ['張無忌', '趙敏', '周芷若']
print(names[0])
結果如下:

2.2 訪問多個串列元素——串列切片
串列切片回傳包含源串列部分元素的新串列,通過索引和步長實作
切片語法是:list[start_index:end_index:step]
正值索引值是0到len(list[])-1,負值索引值是-len(list[])到-1
step預設時第二個冒號也可以省略,但start_index和end_index預設時,兩個冒號均不能省略
回傳的串列元素包含start_index,不含end_index
引數默認值:start_index默認值是0,end_index默認值是len(list[]),step默認值是1
示例如下:
names = ['張無忌', '趙敏', '周芷若']
print(names[0:2]) # 正索引
print(names[-3:-1]) # 負索引
print(names[:2]) # start_index預設
print(names[0:]) # end_index預設
結果如下:

特殊用法:負數step實作串列翻轉
names = ['張無忌', '趙敏', '周芷若']
print(names[::-1]) # start_index和end_index預設
print(names[2:0:-1]) # 無法回傳元素names[0]
print(names[2::-1]) # 正值索引通過預設end_index回傳元素names[0]
print(names[-1::-1])
print(names[-1:-3:-1])
結果如下:

因為step為負值,,即回傳元素的方向是反向索引(從右往左),所以對應的start_index需要大于end_index預設
反向索引切片回傳的串列不含索引為end_index的元素,使用正值索引需要回傳預設end_index引數
2.3 串列元素的變更
2.3.1 修改串列元素
串列元素的修改通過索引實作,可以一次修改過個元素,修改多個元素的語法類似切片
# 修改單個元素,元素不加方括號[]
list1 = ['張無忌', '趙敏', '周芷若']
list1[2] = '小昭'
print(list1)
# 修改不相鄰的多個元素時,修改前后的序列個數必須一致
list2 = ['a', 'b', 'c']
# 也可以使用list2[0:3:2] = ['d', 'e'],Python會自動對可迭代的物件做一次決議,然后賦值到對應位置
list2[0:3:2] = 'de'
print(list2)
# 修改相鄰的多個元素時,修改前后的序列個數可以不同,使用該方法可以變更元素數量
list3 = ['a', 'b', 'c']
# 也可以是list3[3:] = 'de'
list3[3:] = ['d', 'e']
print(list3)
結果如下:

2.3.2 向串列插入元素
向串列任意位置插入元素,使用list[].insert()方法
語法為:
list.insert(index, object)
將object插入到索引index位置,對應位置及之后原來的元素順位后移,示例如下:
names = ['張無忌', '趙敏']
names.insert(1, '小昭')
print(names)
結果如下:

向串列末尾添加元素,使用list[].append()方法
語法為:
list.append(object)
object元素被添加至原串列末尾,示例如下:
names = ['張無忌', '趙敏']
names.append('小昭')
print(names)
結果如下:

2.3.3 洗掉串列元素
使用del陳述句洗掉元素
語法為:
del list[start_index, end_index, step]
洗掉的元素就是切片回傳的元素,示例如下:
names = ['張無忌', '趙敏', '周芷若']
del names[0:3:2]
print(names)
結果如下:

使用list.pop()方法洗掉元素
pop()方法洗掉元素后會彈回元素,在不重復抽獎等程式中常使用
語法為:
list.pop(index)
將索引為index的元素list[index]從原串列洗掉并回傳,index預設時,默認洗掉末尾元素,示例如下:
names = ['張無忌', '趙敏', '周芷若']
name = names.pop()
print(names)
print(name)
結果如下:

使用remove()方法洗掉元素
remove()方法可以根據值洗掉元素
語法為:
list.remove(value)
該方法只會洗掉串列中首個值為value的元素,如果值不在串列中,則會報錯,示例如下:
names = ['張無忌', '趙敏', '周芷若', '張無忌']
names.remove('張無忌')
print(names)
結果如下,第二個張無忌并沒有被洗掉:

2.4 變更串列元素順序
2.4.1 list.sort()方法——對串列永久排序
語法為:
list.sort(key=None, reverse=False)
- key:一個函式,只有一個引數,函式的輸入就是串列元素,根據輸出結果對原串列進行排序
- reverse:排序規則,reverse = True 降序, reverse = False 升序(默認)
sort()方法對原串列進行修改,屬于不可逆的永久排序,示例如下:
names = ['張無忌', '趙敏', '白眉鷹王']
names.sort(key=len, reverse=True) # 以元素的長度為key進行排序
print(names)
結果如下:

2.4.2 sorted()函式——對串列臨時排序
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/281126.html
標籤:其他
