引言
列表
list
是由一系列按照特定順序排列的元素組成的,它是一種有序的資料集合。
你可以新增任何型別的元素到列表中,其中的元素之間可以沒有任何關係。
列表簡介
Python 使用方括號
[]
來定義列表,列表中的每個值稱為元素。
每個元素之間用逗號,
分割開,每個元素都有自己唯一的索引值。
索引值分上標索引和下標索引,下標索引從0
開始,上標索引從-1
開始。
你可以理解為:下標索引 = 正序索引,上標索引 = 倒序索引
建立列表
一般將建立的列表賦給一個變數,因此給變數取個有意義的名字是個不錯的注意
列印列表時,會將方括號[]
也列印出來
如果你想定義一個空列表可以直接使用方括號 []
而不在裡面傳值
定義一個人員列表,如下示例。
persons = ['張三','李四','王五','趙六','錢七','孫八']
print(persons)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八']
列表取值
列表有兩種取值方式,1.按索引號取值 2.範圍取值(切片)
按索引號取值
在列表變數後面加上方括號 []
裡面傳入元素的索引號,如下示例
persons = ['張三','李四','王五','趙六','錢七','孫八']
print(persons[0])
# 執行結果:張三
範圍取值
範圍取值只需在方括號內傳入兩個引數,即 [開始索引:結束索引]
Python 遵循左閉右開原則,即包含左邊的而不包含右邊的,所以實際取到的最後一個值是 結束索引-1。
列表範圍取值
例如取值 1~3 位置的元素,實際只取值到 1~2 位置的元素,如下示例
persons = ['張三','李四','王五','趙六','錢七','孫八']
print(persons[0:3])
# 執行結果:['張三', '李四', '王五']
範圍取值指定步長
範圍取值可以指定步長,只需傳入3個引數,即 [開始索引:結束索引:指定步長]
如果你想範圍取值的時候隔一個或N個元素取值,指定步長是個不錯的注意。
# 隔一個元素取值
persons = ['張三','李四','王五','趙六','錢七','孫八']
print(persons[0:5:2])
# 執行結果:['張三', '王五', '錢七']
新增
列表的新增操作
在指定位置插入元素
insert()
# 插入元素 persons = ['張三','李四','王五','趙六','錢七','孫八'] persons.insert(6,'楊九') print(persons) # 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九']
方法在列表末尾追加元素 append()
# 在末尾追加元素
persons = ['張三','李四','王五','趙六','錢七','孫八']
persons.append('楊九')
print(persons)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九']
在列表末尾追加多個元素 extend()
使用
extend()
方法在末尾同時追加多個元素
# 同時在末尾追加多個元素
persons = ['張三','李四','王五','趙六','錢七','孫八']
persons.extend(['楊九','吳十'])
print(persons)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
刪除
列表的刪除操作
按索引號彈出元素 pop()
pop()
有返回值,彈出的元素可以儲存到一個新的變數中,以便下次使用,也可以不儲存,不儲存就是刪除
以下示例中很好的體現了 pop()
彈出的元素能夠儲存到另一個變數中
persons = ['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = persons.pop(0)
print(persons) # 執行結果:['李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
print(persons2) # 執行結果:張三
按元素名稱移除元素 remove()
值得注意的是,如果列表中存在多個相同的元素,
remove()
方法只會移除正序索引遇到的第一個元素,如果想移除全部可以使用遍歷
persons = ['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons.remove('張三')
print(persons) # 執行結果:['李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
刪除元素 del
del 是Python的語句,而不是列表
list
的方法,del是傳入索引號刪除的,但沒有返回值
persons = ['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
del persons[0]
print(persons) # 執行結果:['李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
其他
列表的一些其他使用方法
len()
函式
使用
len()
函式看列表共有幾個元素
persons = ['張三','李四','王五','趙六','錢七','孫八']
print( len(persons) ) # 執行結果:6
count()
函式
使用
count()
方法檢視元素在列表中出現幾次
# 獲取元素 李四 在列表中出現幾次
persons = ['張三','李四','王五','李四','趙六','錢七','孫八']
cnt = persons.count('李四')
print(cnt) # 執行結果:2
使用 index()
函式檢視元素索引號
index()
方法只返回遇到的第一個符合條件的元素,如果有多個重複的元素名稱需要使用遍歷
如下示例,檢視元素 ”李四“ 的索引號時只返回遇到的第一個元素
persons = ['張三','李四','王五','李四','趙六','錢七','孫八']
print( persons.index('李四') )
# 執行結果:1
遍歷獲取 “李四” 的索引號,如下示例
persons = ['張三','李四','王五','李四','趙六','錢七','孫八']
i = 0
for p in persons:
if p == '李四':
print(i,end='\t')
i += 1
# 執行結果:1 3
分割列表 split()
將字串資料按特定規則分割成列表
例如以下示例, persons
變數中儲存的字串,每個人員用逗號 ,
分割開,使用 split()
方法可以讓其分割成列表
persons = '張三,李四,王五,趙六,錢七,孫八,楊九,吳十'
persons_list = persons.split(',')
print(persons_list)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
使用 copy()
方法複製列表
複製出來的列表是一份獨立全新的資料,更改原列表內容不會影響複製的列表
# 複製列表
persons = ['張三' , '李四' , '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = persons.copy()
persons.remove('李四')
print(persons) # 執行結果:['張三', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
print(persons2) # 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
成員運算子 in
判斷資料是否存在列表中
# 使用成員運算子判斷張三是否存在 `persons` 列表中
persons = ['張三' , '李四' , '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = '張三'
print(persons2 in persons)
# 執行結果:True
身份運算子 is
判斷兩個變數是否使用同一記憶體地址,是否指向同一塊記憶體空間
persons = ['張三' , '李四' , '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = persons.copy()
persons3 = persons
print(persons2 is persons) # 執行結果:False
print(persons3 is persons) # 執行結果:False
清空列表內容 clear()
以下清空列表示例中很好的展示了
copy()
出來的資料是一塊獨立全新的資料,清空persons
列表的內容對它絲毫不受影響
persons = ['張三' , '李四' , '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = persons.copy()
persons3 = persons
persons.clear()
print(persons)
print(persons2)
print(persons3)
'''
執行結果:
[]
['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
[]
'''