列表函數&方法


列表函數&方法

函數

1 返回列表元素個數 len(list)
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(len(list1))
# 9
2 返回列表元素最大值 max(list)
  • 當列表中元素全部為字符串時,根據每個字符串中第一個字符的ASCllUnicode對應的數值來比較,如果第一個字符的ASCllUnicode 對應數值相同,則比較第二個字符,一次類推。
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()相同:

  • 當列表中元素全部為字符串時,根據每個字符串中第一個字符的ASCllUnicode對應的數值來比較,如果第一個字符的ASCllUnicode 對應數值相同,則比較第二個字符,一次類推。
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)

字符串排序依據字符串首個字符的AscllUnicode 數值,首個字符相同則比較第二個字符。

以上代碼輸出:

升序排列的結果為: ['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()方法是淺拷貝。使用時需要注意。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM