文章目录(PS:觉得不错请点赞收藏支持一下)
- 一、推导式
- 1.1 列表推导式
- 1.2 字典推导式
- 1.3 集合推导式
- 二、任务清单
- 总结
一、推导式
1.1 列表推导式
给大家举个简单的例子可能就明白了,如下需求
- 语法格式
[表达式 for 变量 in 可迭代对象]
- 生成一个列表,列表中有 0-9 数字
# 平常我们会这样写
list1 = []
for item in range(0,10,1):
list1.append(item)
print(list1)
# 结果为 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用推导式就是这样写,这样...那样...很简单的就写好了
list2 = [i for i in range(10)]
print(list2)
# 结果为 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
"""
1. for 循环执行几次,就会将 for 前面的值向新的空列表中添加几次
2. for 前面的数据是什么,就会将其添加到当前列表中
3. 换句话说, for 前面的内容是什么,就会将其添加到当前列表汇总, for 循环几次,就会向当前列表添加几次
"""
- 带 if 的列表推导式
"""
1. range 函数方法生成了列表[0,1,2,3,4,5,6,7,8,9,10]
2. for 循环遍历这个列表,筛选出所有偶数,将 i 的值作为当前列表中的元素,
"""
list6 = [i for i in range(0,11) if i % 2 == 0]
print(list6)
# 结果为 [0, 2, 4, 6, 8, 10]
- 多个 for 循环实现列表推导式
n1 = [1,2,3]
n2 = [4,5,6]
n3 = [(i,j) for i in n1 for j in n2]
print(n3)
# 结果为 [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
# 相当于如下代码:
for i in n1:
for j in n2:
print(i,j)
1.2 字典推导式
- 语法格式
{键表达式:值表达式 for 表达式 in 可迭代对象}
- 应用例题
- 创建一个字典,字典 key 是 1-5 数字,value 是这个数字的 2 次方。
dict2 = {i: i ** 2 for i in range(1,6)}
print(dict2)
# 结果为 {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
- 将两个列表合并为一个字典
list1 = ['name','age','gender']
list2 = ['Tom',20,'man']
dict2 = {list1[i]:list2[i] for i in range(len(list1))}
print(dict2)
# 结果为 {'name': 'Tom', 'age': 20, 'gender': 'man'}
- 提取字典中目标数据
counts = {'MBP': 268,'hp':125,'DELL': 201}
# 需求: 提取上述电脑数量大于等于 200 的数据
new_counts = {key:value for key,value in counts.items() if value >= 200}
print(new_counts)
# 结果为 {'MBP': 268, 'DELL': 201}
1.3 集合推导式
- 语法格式
{表达式 for 表达式 in 可迭代变量}
集合推导式与列表推式 是一样的,不再多举了。
set1 = {i for i in range(0,10,2)}
print(set1)
# 结果为 {0, 2, 4, 6, 8}
二、任务清单
- 使用推导式将列表中的数字都乘以2
list1 = [1,2,3,4,5,6]
list2 = [i*2 for i in list1]
print(list2)
# 结果为 [2, 4, 6, 8, 10, 12]
- 使用推导式将列表中的数字都乘以2再加上10
list1 = [1,2,3,4,5,6]
list2 = [i*2+10 for i in list1]
print(list2)
# 结果为 [12, 14, 16, 18, 20, 22]
- 使用推导式将列表中的偶数都乘以2
list1 = [1,2,3,4,5,6]
list2 = [i*2 for i in list1 if i % 2 ==0]
print(list2)
# 结果为 [4, 8, 12]
- 使用推导式将列表中的奇数都乘以2
list1 = [1,2,3,4,5,6]
list2 = [i*2 for i in list1 if i % 2 !=0]
print(list2)
# 结果为 [2, 6, 10]
- 使用推导式将列表中大于等于10的数字都乘以2
list1 = [1,2,3,4,5,6,11,15]
list2 = [i*2 for i in list1 if i >= 10]
print(list2)
# 结果为 [22, 30]
- 使用推导式将列表中所有的三位数都乘以2
list1 = [10,50,120,110]
list2 = [i*2 for i in list1 if i > 99]
print(list2)
# 结果为 [240, 220]
- 有如下的列表
"""
l1=['hello','nice','nine','world','none']
使用推导式筛选出所有以字母 n 开头的元素,并输出
使用推导式筛选出所有以字母 e 结束的元素,并输出
"""
l1=['hello','nice','nine','world','none']
list2 = [i for i in l1 if i.startswith('n') or i.endswith('e')]
print(list2)
# 结果为 ['nice', 'nine', 'none']
- 有下面的列表
"""
l1=['hello ','world ','你好 ']
使用推导式将每个元素后面的空格去掉,并输出
"""
l1=['hello ','world ','你好 ']
list2 = [i.rstrip() for i in l1]
print(list2)
# 结果为 ['hello', 'world', '你好']
- 有如下列表
"""
l1 = ['北京', '保定', '石家庄', '邯郸', '承德']
使用推导式将当前列表改成如下这样
['北京欢迎您', '保定欢迎您', '石家庄欢迎您', '邯郸欢迎您', '承德欢迎您']
"""
l1 = ['北京', '保定', '石家庄', '邯郸', '承德']
list2 = [i+'欢迎您' for i in l1]
print(list2)
# 结果为 ['北京欢迎您', '保定欢迎您', '石家庄欢迎您', '邯郸欢迎您', '承德欢迎您']
- 有如下列表
"""
l1 = ['北京', '常州', '苏州', '定州', '承德']
使用推导式从当前列表生成如下列表
['常州欢迎您', '苏州欢迎您', '定州欢迎您']
说明:将所有带“州”的城市筛选出来,并与“欢迎您”合并
"""
l1 = ['北京', '常州', '苏州', '定州', '承德']
list2 = [i+'欢迎您' for i in l1 if i.endswith('州')]
print(list2)
# 结果为 ['常州欢迎您', '苏州欢迎您', '定州欢迎您']
- 游泳比赛成绩统计:
"""
让用户录入5位参赛者的成绩(使用 input 函数输入)
使用列表存储这5个成绩,如 [50,90,70,88,60]
使用推导式找出所有大于等于80分的成绩并输出
使用推导式将每个成绩加上10分,并输出
使用推导式筛选出大于等于平均分(平均分可以单独运算)的成绩,并输出
"""
list1 = []
i = 1
while i < 6:
score = float(input('请输入成绩:'))
list1.append(score)
i += 1
# 使用推导式找出所有大于等于80分的成绩并输出
list2 = [i for i in list1 if i >= 80]
print(list2)
# 使用推导式将每个成绩加上10分,并输出
list3 = [i+10 for i in list1]
print(list3)
# 使用推导式筛选出大于等于平均分(平均分可以单独运算)的成绩,并输出
average = sum(list1) / len(list1) # 计算平均分
list4 = [i for i in list1 if i >= average]
print(list4)
- 有如下列表
"""
l1 = ['a', 'B', 'c', 'D', 'E', 'F', 'g']
使用推导式筛选出所有的大写字母
统计列表中大写字母的数量,并输出
"""
# 使用推导式筛选出所有的大写字母
l1 = ['a', 'B', 'c', 'D', 'E', 'F', 'g']
list1 = [i for i in l1 if i.isupper()]
print(list1)
# 统计列表中大写字母的数量,并输出
l1 = ['a', 'B', 'c', 'D', 'E', 'F', 'g']
list1 = [i for i in l1 if i.isupper()]
print(len(list1))
- 字典推导式练习
"""
有如下两个列表
d_name = ['name', 'age', 'gender', 'address']
d_score = ['大鲨鱼', 30, '男', '美国弗罗里达州']
使用推导式将其组成一个字典,格式如下
{'name': '大鲨鱼', 'age': 30, 'gender': '男', 'address': '美国弗罗里达州'}
"""
d_name = ['name', 'age', 'gender', 'address']
d_score = ['大鲨鱼', 30, '男', '美国弗罗里达州']
dict1 = {d_name[i] : d_score[i] for i in range(len(d_name))}
print(dict1)
# 结果为 {'name': '大鲨鱼', 'age': 30, 'gender': '男', 'address': '美国弗罗里达州'}
- 字典推导式练习
"""
有如下两个列表
d_name = ['brand', 'color', 'camer', 'system']
d_score = ['apple', '黑色', '8K摄影', 'ios']
使用推导式将其组成一个字典,格式如下:
{'brand': 'apple', 'color': '黑色', 'camer': '8K摄影', 'system': 'ios'}
"""
d_name = ['brand', 'color', 'camer', 'system']
d_score = ['apple', '黑色', '8K摄影', 'ios']
dict1 = {d_name[i] : d_score[i] for i in range(len(d_name))}
print(dict1)
# 结果为 {'brand': 'apple', 'color': '黑色', 'camer': '8K摄影', 'system': 'ios'}
总结
lalalalalalalaaa… 【i love you !】