列表常用函数及列表推导式
列表相关函数有很多,我在这只分享一下常用的几个函数。
常用函数
-
min、max — 求最小/最大值
用法:max(序列) / min(序列);
使用时,序列中元素类型一致。且具有可比性。numbers = [12,23,45,56,78,2,4,5] print(min(numbers)) #2 print(max(numbers)) #78
-
sum — 求数字序列中元素的和
用法:sum(序列);
print(sum(numbers)) #225
- sorted — 排序
产生新列表保存排序后的列表,原列表不变
sorted(序列,reverse=True) #逆序
print(sorted(numbers)) #[2, 4, 5, 12, 23, 45, 56, 78]
# new_numbers = sorted(numbers)
print(numbers) #[12, 23, 45, 56, 78, 2, 4, 5]
# 就在原列表中排序,原列表改变
numbers.sort()
print(numbers) #[2, 4, 5, 12, 23, 45, 56, 78]
- len — 获取序列中元素个数
用法:len(序列)
print(len(numbers)) #8
-
list — 列表类型转换
用法:list(序列) ;
所有的序列都能转化为列表;直接将序列中的元素转换成列表中的元素;
string = 'asdfghj' print(list(string)) #['a', 's', 'd', 'f', 'g', 'h', 'j'] print(list(range(5))) #[0, 1, 2, 3, 4] # 枚举 print(list(enumerate(numbers))) #[(0, 2), (1, 4), (2, 5), (3, 12), (4, 23), (5, 45), (6, 56), (7, 78)]
列表推导式
列表推导式 — 本质就是创建列表的表达式。
结构一
[表达式 for 变量 in 序列]
scores = [71,82,56,60,98,94,53]
list1 = [9 for index in range(3)]
print(list1) #[9, 9, 9]
list2 = [index for index in range(3)]
print(list2) #[0, 1, 2]
list3 = [item >= 60 for item in scores]
print(list3) #[True, True, False, True, True, True, False]
结构二
[表达式 for 变量 in 序列 if 条件语句]
scores = [71,82,56,60,98,94,53]
list4 = [item for item in scores if item >= 60]
print(list4) #[71, 82, 60, 98, 94]
应用
-
应用一:
让序列中所有元素进行统一变换;
[表达式 for 变量 in 序列]# 应用一: 变换输出格式 scores = [71,82,56,60,98,94,53] new_scores = [[index,scores[index]] for index in range(len(scores))] print(new_scores) #[[0, 71], [1, 82], [2, 56], [3, 60], [4, 98], [5, 94], [6, 53]]
-
应用二:
将序列中满足某个条件的元素进行变换(根据某个条件是否满足做两种不同的变换)
[表达式1 if 条件语句 else 表达式2 for 变量 in 序列]# 应用二: 将所有元素中偶数除以2,奇数不变 scores = [71,82,56,60,98,94,53] new_scores1 = [item // 2 if item % 2 == 0 else item for item in scores] print(new_scores1)
应用二补充说明:三目运算符;
C/Java 三目运算符:条件语句?表达式1:表达式2 — 条件成立,运算结果为表达式1的运算结果,否则为表达式2的结果
Python 三目运算符:表达式1 if 条件语句 else 表达式2 — 如果条件语句成立整个运算结果是表达式1的值,否则为表达式2的值
age = 18
a = '成年' if age >= 18 else '未成年'
print(a)
-
应用三:
提取/删除序列中满足条件的元素# 应用3: 提取特定(奇数)元素 scores = [71,82,56,60,98,94,53] new_scores2 = [item for item in scores if item % 2] print(new_scores2)