文章目錄
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 # 返回結果
如果您覺得此文章對您有所幫助, 請幫我點贊哦~