Python常用對象之列表操作手冊之內置函數

Python常用對象之列表操作手冊之內置函數

本篇文章僅講解操作列表的內置函數, 運算符、列表方法等請看後續博文

約定: 所有空字符串、空列表等空對象都爲False, None與任何0值都爲False
約定: 這裏介紹的全局函數不僅適用於列表, 還適用於大部分可迭代對象
約定: 示例代碼中 >>> 表示交互輸入
約定: 示例代碼中 <<< 表示交互輸出

內置函數

函數 說明
len 獲取列表元素個數
del 刪除列表元素 (支持切片語法)
max 獲取列表中的最大元素
min 獲取列表中的最小元素
sum 累加列表所有元素
range 創建一個列表 (通過list轉換)

實際爲創建一個生成器
sorted 排序, 返回排序後的副本

list.sort方法不同的是, list.sort方法會修改自身
reversed 反轉列表元素, 返回反向迭代器 (可通過list轉爲列表)

list.reverse方法不同的是, list.reverse方法會修改自身
list 創建空列表, 將可迭代對象轉換爲列表
tuple 轉爲元組
all 當列表中的所有元素都爲True時返回True, 否則返回False

常用於參數校驗
any 當列表中至少一個元素值爲True時返回True, 否則返回False

常用於參數校驗
enumerate 創建一個枚舉對象 (可通過list轉爲列表)

[(index, item), …] # 可以理解爲這種模型
常用於for循環
filter 列表過濾, 返回過濾後的迭代器 (可通過list轉爲列表)

默認過濾掉元素值爲False的所有元素
frozenset 列表去重, 返回一個不可變集合對象 (可通過list轉爲列表)
set 轉爲集合, 列表去重, 返回一個集合對象 (可通過list轉爲列表)
map 列表元素處理, 返回一個可迭代對象 (可通過list轉爲列表)
zip 列表聚合

[(x[0], y[0]), (x[1], y[1])…] # 可以理解爲這種模型
import random
random.choice
隨機返回列表中的一個元素

del函數示例

這裏用到了切片語法, 如果您對切片語法不甚瞭解, 詳細切片語法請看我的後續博文, 或者關注我的微信公衆號

>>> lis = list(range(10))  # 創建一個包含10個元素的列表, 0-9
>>> lis  # 查看列表元素
<<< [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> del lis[0]  # 刪除第一個元素
>>> lis  # 查看列表元素
<<< [1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> del lis[0: 3]  # 從0號元素開始刪除到3號元素 (3號元素不會刪除, 0, 1, 2)
>>> lis  # 查看列表元素
<<< [4, 5, 6, 7, 8, 9]

>>> del lis[::2]  # 每隔一個元素刪除一個元素
>>> lis  # 查看列表元素
<<< [5, 7, 9]

max、min、sum函數示例

>>> lis = [1, 2, 3, 4, 5]  # 創建一個列表

>>> max(lis)  # 獲取列表中的最大元素
<<< 5  # 返回結果

>>> min(lis)  # 獲取列表中的最小元素
<<< 1  # 返回結果

>>> sum(lis)  # 累加列表元素
<<< 15  # 返回結果

sorted、reversed函數示例

>>> lis = [1, 5, 7, 3, 8, 2, 9]  # 創建一個亂序列表

>>> sorted(lis)  # 升序排序
<<< [1, 2, 3, 5, 7, 8, 9]  # 排序結果

>>> sorted(lis, reverse=True)  # 降序排序
<<< [9, 8, 7, 5, 3, 2, 1]  # 排序結果

>>> list(reversed(lis))  # 反轉列表元素
<<< [9, 2, 8, 3, 7, 5, 1]  # 反轉結果

all、any函數示例

>>> # all函數, 所有元素都爲True結果才爲True
>>> all([1, 2, 3])  # 所有元素都爲True
<<< True  # 返回True
>>> all(['', 'abc'])  # 空字符串爲False, 返回False
<<< False  # 返回False

>>> # any函數, 任意元素爲True結果就爲True
>>> any([1, 2, 3])  # 所有元素都爲True
<<< True  # 返回True
>>> any(['', 'abc'])  # 'abc'爲True, 返回True
<<< True  # 返回True

enumerate函數示例

>>> lis = list('ABCDEF')  # 創建一個包含字母A-F的字符串列表
>>> lis  # 查看列表
<<< ['A', 'B', 'C', 'D', 'E', 'F']

>>> enum = enumerate(lis)  # 創建一個枚舉對象
>>> enum  # 查看枚舉對象
<<< <enumerate object at 0x000001B83C2900E8>  # 沒有任何意義, 知道他是一個可迭代對象就行了
>>> list(enum)  # 轉爲列表查看
<<< [(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D'), (4, 'E'), (5, 'F')]
>>> # 這裏解釋下上面的輸出結果: 這是一個元組列表, 元組的0號元素爲列表元素索引, 1號元素爲列表元素

>>> # 使用拆包語法來打印下看看
>>> # 注意: 因爲上面的list(enum)已經把迭代器耗盡了, 所以這裏需要重新創建枚舉對象
>>> # 關於迭代器的詳細介紹請看我的後續博文
>>> for i, item in enumerate(lis):
>>> 	print(i, item)
<<< 0 A
<<< 1 B
<<< 2 C
<<< 3 D
<<< 4 E
<<< 5 F

filter函數示例: 僅保留整形元素

>>> lis = [0, 1, 2, '', 'A', 'B']  # 創建一個列表
>>> # filter的默認行爲爲去除所有Flase元素, 返回一個迭代器, 這裏直接把它轉爲列表
>>> list(filter(None, lis))
<<< [1, 2, 'A', 'B']  # 過濾結果, 可以看到0跟''已經被過濾掉了

>>> # 實際上filter第一個參數爲, 接收一個當前迭代元素作爲參數的回調函數, 返回True表示保留, False表示過濾
>>> # 這裏演示一個僅保留整形元素的例子
>>> lis  # 查看列表
<<< [0, 1, 2, '', 'A', 'B']  # 因爲我們沒有保存過濾結果, 所以這還是創建時的列表
>>> list(filter(lambda x: isinstance(x, int), lis))  # 一行代碼搞定, python就是這麼簡潔優雅
<<< [0, 1, 2]  # 過濾結果, 可以看到現在就只剩下整形元素了, 所有字符串元素都被過濾掉了
>>> # 這裏簡單解釋下上面的過濾代碼
>>> # 使用lambda關鍵字定義一個匿名函數
>>> # 使用內置函數isinstance判斷列表元素是否爲int的實例

frozenset、set函數示例: 去重

>>> lis = [1, 1, 2, 3, 6, 6, 6, 8, 9, 1]  # 定義一個包含重複元素的列表
>>> list(frozenset(lis))  # 轉爲不可變集合對象, 去重
<<< [1, 2, 3, 6, 8, 9]  # 去重結果

>>> list(set(lis))  # 轉爲集合對象, 去重
<<< [1, 2, 3, 6, 8, 9]  # 去重結果

map函數示例

>>> lis = [1, 2, 3, 4]  # 定義一個列表
>>> list(map(lambda x: x*x, lis))  # 將每個元素與自身相乘
<<< [1, 4, 9, 16]  # 處理結果

zip函數示例

>>> lis_key = [1, 2, 3] # 定義一個整數列表
>>> lis_val = ['一', '二', '三']  # 定義一個字符串列表
>>> list(zip(lis_key, lis_val))  # 聚合
<<< [(1, '一'), (2, '二'), (3, '三')]  # 聚合結果

>>> # 有什麼用? 轉爲字典啊
>>> dict(zip(lis_key, lis_val))  # 轉爲字典
<<< {1: '一', 2: '二', 3: '三'}  # 轉換結果

random.choice方法示例

>>> import random  # 導入隨機數模塊


>>> lis = list(range(10))  # 創建一個包含10個元素的列表, 0-9
>>> random.choice(lis)  # 隨機從列表中返回一個元素
<<< 3  # 返回結果

如果您覺得此文章對您有所幫助, 請幫我點贊哦~



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章