当前位置:首页 » 《资源分享》 » 正文

Python基础篇(九)_m0_58040147的博客

11 人参与  2021年09月18日 14:43  分类 : 《资源分享》  评论

点击全文阅读


文章目录(PS:觉得不错请点赞收藏支持一下)

    • 一、推导式
        • 1.1 列表推导式
        • 1.2 字典推导式
        • 1.3 集合推导式
    • 二、任务清单
    • 总结

一、推导式

1.1 列表推导式

给大家举个简单的例子可能就明白了,如下需求

  1. 语法格式
[表达式 for 变量 in 可迭代对象]
  1. 生成一个列表,列表中有 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 循环几次,就会向当前列表添加几次
"""

  1. 带 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]
  1. 多个 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 字典推导式

  1. 语法格式
{键表达式:值表达式 for 表达式 in 可迭代对象}
  1. 应用例题
  • 创建一个字典,字典 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 集合推导式

  1. 语法格式
{表达式 for 表达式 in 可迭代变量}

集合推导式与列表推式 是一样的,不再多举了。

set1 = {i for i in range(0,10,2)}
print(set1)
# 结果为 {0, 2, 4, 6, 8}

二、任务清单

  1. 使用推导式将列表中的数字都乘以2
list1 = [1,2,3,4,5,6]
list2 = [i*2 for i in list1]
print(list2)
# 结果为 [2, 4, 6, 8, 10, 12]
  1. 使用推导式将列表中的数字都乘以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]
  1. 使用推导式将列表中的偶数都乘以2
list1 = [1,2,3,4,5,6]
list2 = [i*2 for i in list1 if i % 2 ==0]
print(list2)
# 结果为 [4, 8, 12]
  1. 使用推导式将列表中的奇数都乘以2
list1 = [1,2,3,4,5,6]
list2 = [i*2 for i in list1 if i % 2 !=0]
print(list2)
# 结果为 [2, 6, 10]
  1. 使用推导式将列表中大于等于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]
  1. 使用推导式将列表中所有的三位数都乘以2
list1 = [10,50,120,110]
list2 = [i*2 for i in list1 if i > 99]
print(list2)
# 结果为 [240, 220]
  1. 有如下的列表
"""
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']
  1. 有下面的列表
"""
l1=['hello ','world  ','你好 ']
使用推导式将每个元素后面的空格去掉,并输出
"""
l1=['hello ','world  ','你好 ']
list2 = [i.rstrip() for i in l1]
print(list2)
# 结果为 ['hello', 'world', '你好']
  1. 有如下列表
"""
l1 = ['北京', '保定', '石家庄', '邯郸', '承德']
使用推导式将当前列表改成如下这样
['北京欢迎您', '保定欢迎您', '石家庄欢迎您', '邯郸欢迎您', '承德欢迎您']
"""
l1 = ['北京', '保定', '石家庄', '邯郸', '承德']
list2 = [i+'欢迎您' for i in l1]
print(list2)
# 结果为 ['北京欢迎您', '保定欢迎您', '石家庄欢迎您', '邯郸欢迎您', '承德欢迎您']
  1. 有如下列表
"""
l1 = ['北京', '常州', '苏州', '定州', '承德']
使用推导式从当前列表生成如下列表
['常州欢迎您', '苏州欢迎您', '定州欢迎您']
说明:将所有带“州”的城市筛选出来,并与“欢迎您”合并
"""
l1 = ['北京', '常州', '苏州', '定州', '承德']
list2 = [i+'欢迎您' for i in l1 if i.endswith('州')]
print(list2)
# 结果为 ['常州欢迎您', '苏州欢迎您', '定州欢迎您']
  1. 游泳比赛成绩统计:
"""
让用户录入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)
  1. 有如下列表
"""
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))
  1. 字典推导式练习
"""
有如下两个列表
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': '美国弗罗里达州'}
  1. 字典推导式练习
"""
有如下两个列表
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 !】

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/28057.html

推导  欢迎您  列表  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1