列表函數&方法
函數
1 返回列表元素個數 len(list)
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(len(list1))
# 9
2 返回列表元素最大值 max(list)
- 當列表中元素全部為字符串時,根據每個字符串中第一個字符的
ASCll
或Unicode
對應的數值來比較,如果第一個字符的ASCll
或Unicode
對應數值相同,則比較第二個字符,一次類推。
list1 = ['maria', 'jack', '張三', '李四']
print(ord('m'))
# 109
print(ord('j'))
# 106
print(ord('張'))
# 24352
print(ord('李'))
# 26446
print(max(list1))
# 李四
- 當列表中元素全部為數值時,直接根據數值大小來比較。
list1 = [1, 2, 6, 5, 8, 9, 10, 15]
print(max(list1))
# 15
- 當列表中元素不全是字符串或不全是數值時,無法比較出最大值。
list1 = ['maria', 'jack', '張三', '李四', 2, 5]
print(max(list1))
# TypeError: '>' not supported between instances of 'int' and 'str'
3 返回列表元素最小值 min(list)
使用方法和max()
相同:
- 當列表中元素全部為字符串時,根據每個字符串中第一個字符的
ASCll
或Unicode
對應的數值來比較,如果第一個字符的ASCll
或Unicode
對應數值相同,則比較第二個字符,一次類推。
list1 = ['maria', 'jack', '張三', '李四']
print(min(list1))
# jack
- 當列表中元素全部為數值時,直接根據數值大小來比較。
list1 = [1, 2, 6, 5, 8, 9, 10, 15]
print(max(list1))
# 1
- 當列表中元素不全是字符串或不全是數值時,無法比較。
list1 = ['maria', 'jack', '張三', '李四', 2, 5]
print(min(list1))
# TypeError: '>' not supported between instances of 'int' and 'str'
4 將元組轉換成列表 list()
list() 方法用於將元組或字符串轉換為列表。
注:元組與列表是非常類似的,區別在於元組的元素值不能修改,元組是放在括號中,列表是放於方括號中。
語法
list(seq)
# seq 為要轉換成列表的元組或字符串
示例
tuple1 = (1, 3, 5, 7, 9)
print(list(tuple1))
print(list('hello,world!'))
輸出:
[1, 3, 5, 7, 9]
['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd', '!']
列表方法
1 在列表末尾添加新元素 list.append(obj)
append() 方法用於在列表末尾添加新元素。
語法
list.append(obj)
-
list
是要操作的列表對象 -
obj
是要添加到列表末尾的對象 -
該方法無返回值,但是修改原列表
示例
list1 = [1, 2, 'ZhangSan']
list1.append('LiSi')
print(list1)
list1.append([5, 6, 7])
print(list1)
輸出:
[1, 2, 'ZhangSan', 'LiSi']
[1, 2, 'ZhangSan', 'LiSi', [5, 6, 7]]
注意
list1 = [1, 2]
list2 =[3]
list1.append(list2)
print(list1)
list2[0] = 5
print(list1, list2)
以上代碼輸出:
[1, 2, [3]]
[1, 2, [5]] [5]
由此可見,append() 是淺拷貝
。
如果不希望這樣,可以使用copy.deepcopy
:需要導入copy
模塊
import copy
list1 = [1, 2]
list2 =[3]
list1.append(copy.deepcopy(list2))
print(list1)
list2[0] = 5
print(list1, list2)
以上代碼輸出:
[1, 2, [3]]
[1, 2, [3]] [5]
2 統計某個元素在列表中出現次數 list.count(obj)
count() 方法用於統計某個元素在列表中出現的次數。
語法
list.count(obj)
obj
是需要統計的元素
示例
list1 = [1, 1, 1, '1', 1, '1', 2, 3]
print(f"列表中有數字1的個數為:{list1.count(1)}")
print(f"列表中有字符串1的個數為:{list1.count('1')}")
以上代碼輸出:
列表中有數字1的個數為:4
列表中有字符串1的個數為:2
3 list.extend(seq)
extend() 函數用於在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)。
語法
list.extend(seq)
seq
--元素列表,可以是列表、元組、集合、字典,若為字典,則僅會將鍵(key)作為元素依次添加至原列表的末尾。
示例
list1 = [1, 2, 3]
num_tuple = (4, 5, 6)
num_set = {7, 8, 9}
num_list = [10, 11]
num_dict = {
12: 'twelve'
}
list1.extend(num_tuple)
print("添加元組元素后:", list1)
list1.extend(num_set)
print("添加集合元素后:", list1)
list1.extend(num_list)
print("添加列表元素后:", list1)
list1.extend(num_dict)
print("添加字典元素后:", list1)
以上代碼輸出:
添加元組元素后: [1, 2, 3, 4, 5, 6]
添加集合元素后: [1, 2, 3, 4, 5, 6, 8, 9, 7]
添加列表元素后: [1, 2, 3, 4, 5, 6, 8, 9, 7, 10, 11]
添加字典元素后: [1, 2, 3, 4, 5, 6, 8, 9, 7, 10, 11, 12]
4 list.index()
index() 函數用於從列表中找出某個值第一個匹配項的索引位置。
語法
list.index(x[, start, end])
x
要查找的元素start
--可選,默認值為0
,查找的起始位置end
--可選,默認值為length-1
查找的結束位置
注意:查找范圍包括起始索引,不包括結束索引。
示例
list1 = ['aa', 'bb', 'cc', 'aa', 'aa', 'cc', 'bb', 'dd', 'ee']
print("第一個aa的索引為:", list1.index('aa'))
print("從索引3開始的第一個aa的索引為:", list1.index('aa', 3))
print("從索引2到索引7的第一個bb的索引為:", list1.index('bb', 2, 7))
以上代碼輸出:
第一個aa的索引為: 0
從索引3開始的第一個aa的索引為: 3
從索引2到索引7的第一個bb的索引為: 6
5 在列表指定位置插入元素 list.insert()
insert() 函數用於將指定對象插入列表的指定位置。
語法
list.insert(index, obj)
index
-- 對象obj需要插入的索引位置。obj
-- 要插入列表中的對象。
示例
list1 = [1, 3, 4, 5]
list1.insert(1, 2)
print(list1)
以上代碼輸出:
[1, 2, 3, 4, 5]
6 移除列表中一個元素 list.pop()
pop() 函數用於移除列表中的一個元素(默認最后一個元素),並且返回該元素的值。
語法
list.pop([index])
-
index
--可選參數,默認為-1
,不能超出列表索引范圍 -
返回值為移除的元素
示例
list1 = ['BeiJing', 'ShangHai', 'GuangZhou', 'ZhengZhou', 'HangZhou']
list_pop = list1.pop()
print(f"移除元素{list_pop}后的列表為:{list1}" )
list_pop = list1.pop(1)
print(f"移除元素{list_pop}后的列表為:{list1}" )
以上代碼輸出:
移除元素HangZhou后的列表為:['BeiJing', 'ShangHai', 'GuangZhou', 'ZhengZhou']
移除元素ShangHai后的列表為:['BeiJing', 'GuangZhou', 'ZhengZhou']
7 移除列表中某個值的第一個匹配項 list.remove()
remove() 函數用於移除列表中某個值的第一個匹配項。
語法
list.remove(obj)
-
obj
-- 列表中要移除的對象。 -
該方法無返回值
示例
list1 = [1, 2, 1, 3, 6, 5, 2]
list1.remove(1)
print(list1)
以上代碼輸出:
[2, 1, 3, 6, 5, 2]
8 反向列表中的元素 list.reverse()
reverse() 函數用於反向列表中元素。
語法
list.reverse()
- 無參數,無返回值
示例
list1 = [1, 2, 3, 45, 6]
list1.reverse()
print(list1)
以上代碼輸出:
[6, 45, 3, 2, 1]
9 列表排序 list.sort()
sort() 函數用於對原列表進行排序,如果指定參數,則使用比較函數指定的比較函數。
語法
list.sort(key=None, reverse=False)
key
-- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。reverse
-- 排序規則,reverse = True 降序, reverse = False 升序(默認)。
示例
list1 = [1, 2, 3, 45, 6, 10, 88]
list1.sort()
print(list1)
以上代碼輸出結果:
[1, 2, 3, 6, 10, 45, 88]
降序排列:
list1 = [1, 2, 3, 45, 6, 10, 88]
list1.sort(reverse=True)
print(list1)
以上代碼輸出:
[88, 45, 10, 6, 3, 2, 1]
對字符串進行排序:
list1 = ['BeinJing', 'ShangHai', 'GuangZhou', 'ZhengZhou']
list1.sort()
print("升序排列的結果為:", list1)
list1.sort(reverse=True)
print("降序排列的結果為:", list1)
字符串排序依據字符串首個字符的Ascll
或 Unicode
數值,首個字符相同則比較第二個字符。
以上代碼輸出:
升序排列的結果為: ['BeinJing', 'GuangZhou', 'ShangHai', 'ZhengZhou']
降序排列的結果為: ['ZhengZhou', 'ShangHai', 'GuangZhou', 'BeinJing']
通過指定列表中的元素排序來輸出列表:
list1 = ['BeinJing', 'ShangHai', 'GuangZhou', 'ZhengZhou']
list1.sort(key=lambda k: k[1])
print("根據字符串的第二個字符排列的結果為:", list1)
以上代碼輸出:
根據字符串的第二個字符排列的結果為: ['BeinJing', 'ShangHai', 'ZhengZhou', 'GuangZhou']
等價於下面的代碼:
list1 = ['BeinJing', 'ShangHai', 'GuangZhou', 'ZhengZhou']
def secondchar(e):
return e[1]
list1.sort(key=secondchar)
print("根據字符串的第二個字符排列的結果為:", list1)
10 清空列表 list.clear()
clear() 函數用於清空列表,類似於 del a[:]。
語法
list.clear()
示例
list1 = [1, 2, 3, 4, 5]
list1.clear()
print(list1)
以上代碼輸出:
[]
11 復制列表 list.copy()
copy() 函數用於復制列表,類似於 a[:]。
語法
list.copy()
示例
list1 = [1, 2, 3, 4, 5, 6]
list2 = list1.copy()
print(list2)
以上代碼輸出:
[1, 2, 3, 4, 5, 6]
實驗:
list1 = [1, 2, 3, 4, 5, 6]
list2 = list1.copy()
list1[1] = 10
print(list1, list2)
# [1, 10, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6]
再看下面:
list1 = [[8, 9], 1, 2, 3, 4, 5, 6]
list2 = list1.copy()
list1[0][1] = 10
print(list1, list2)
# [[8, 10], 1, 2, 3, 4, 5, 6] [[8, 10], 1, 2, 3, 4, 5, 6]
說明copy()方法是淺拷貝。使用時需要注意。