约定: 所有空字符串、空列表等空对象都为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 |
随机返回列表中的一个元素 |
这里用到了切片语法, 如果您对切片语法不甚了解, 详细切片语法请看我的后续博文, 或者关注我的微信公众号
>>> 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]
>>> lis = [1, 2, 3, 4, 5] # 创建一个列表
>>> max(lis) # 获取列表中的最大元素
<<< 5 # 返回结果
>>> min(lis) # 获取列表中的最小元素
<<< 1 # 返回结果
>>> sum(lis) # 累加列表元素
<<< 15 # 返回结果
>>> 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函数, 所有元素都为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
>>> 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
>>> 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的实例
>>> 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] # 去重结果
>>> lis = [1, 2, 3, 4] # 定义一个列表
>>> list(map(lambda x: x*x, lis)) # 将每个元素与自身相乘
<<< [1, 4, 9, 16] # 处理结果
>>> 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: '三'} # 转换结果
>>> import random # 导入随机数模块
>>> lis = list(range(10)) # 创建一个包含10个元素的列表, 0-9
>>> random.choice(lis) # 随机从列表中返回一个元素
<<< 3 # 返回结果
如果您觉得此文章对您有所帮助, 请帮我点赞哦~