Python基础汇总之【推导式】

news/2025/2/23 5:45:31/

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体
Python 支持各种数据结构的推导式:列表(list)推导式、字典(dict)推导式、集合(set)推导式、元组(tuple)推导式

  • 列表(list)推导式
    格式:[表达式 for 变量 in 列表]
    [out_exp_res for out_exp in input_list]
    或者
    [表达式 for 变量 in 列表 if 条件]
    [out_exp_res for out_exp in input_list if condition]
    (1)out_exp_res:列表生成元素表达式,可以是有返回值的函数。
    (2)for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
    (3)if condition:条件语句,可以过滤列表中不符合条件的值

案例1:0~9之间的偶数生成新列表

#非推导式
d=[]
for i in range(10):if i%2==0:d.append(i)
print('输出d::',d)
#输出结果:
输出d:: [0, 2, 4, 6, 8]#推导式
sum=0
for i in range(10):sum=sum+1r1 =[i for i in range(i) if i%2==0]
print('输出r1::',r1)
#输出结果:
输出r1:: [0, 2, 4, 6, 8]

案例2:城市首字母为"bsgc"转换为全部大写,否则首字母大写

city=['CaoXian','BeiJing','ShangHai','GuangZhou','ShengZen','JiNan','JuanCheng','TianJin','HangZhou','NANJING']
newcity=[c.capitalize()  if c[0]  not in  ('BCSG')   else c.upper() for c in city]
print(newcity)#输出结果:
['CAOXIAN', 'BEIJING', 'SHANGHAI', 'GUANGZHOU', 'SHENGZEN', 'Jinan', 'Juancheng', 'Tianjin', 'Hangzhou', 'Nanjing']
  • 字典(dict)推导式
    格式: { key_expr: value_expr for value in collection }

    { key_expr: value_expr for value in collection if condition }
#案例1:键值对
listdemo = ['baidu','taobao', '163']
# 将列表中各字符串值为键,各字符串的长度为值,组成键值对
newdict = {key:'https://www.'+ key +'.com' for key in listdemo}
print(newdict)#输出结果:
{'baidu': 'https://www.baidu.com', 'taobao': 'https://www.taobao.com', '163': 'https://www.163.com'}#案例2:平方计算
newdict0={num+'的平方':int(num)**2 for num in  (input('请输入一个数:'))}
print(newdict0)#输出结果:
请输入一个数:9
{'9的平方': 81}
  • 集合(set)推导式
    格式: { expression for item in Sequence }

    { expression for item in Sequence if conditional }
class Light:def  _avg(self,A):#第1组数据平均数global sumsum = 0for i in (A):sum = sum+i#求和av = round(sum/len(A))#求平均值return avdef add(self,B,av,k):#第2组数据分别减去第1组数据的平均数求和,并用和乘以相关系数global sum1sum1 = 0c = []for j in (B):l =abs(j-av)#求绝对值sum1=sum1 +lc.append(sum1*k)return cA=[21,17,14,16,15,13,22,22,16,17,14,13,27,11,20,12,14,15,8,11,16,19,22,15,11,22,15,16,15,14]
B=[14,11,15,21,12,9,17,6,17,19,11,22,18,20,19,11,20,10,21,16,10,18,19,16,16,18,14,16,13,18]
k=2
a={int(l) if 180<=int(l)<=200 else '超过区间值!!!' for l in (Light().add(B,Light()._avg(A),k)) }
print(a)#输出结果
{198}

-元组(tuple)推导式
元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象
格式: (expression for item in Sequence )

(expression for item in Sequence if conditional )


http://www.ppmy.cn/news/6970.html

相关文章

接口安全防护

接口防刷 限制一台电脑一段时间内访问同一接口的次数 思路&#xff1a; 1&#xff1a;设计一个redis临时key&#xff0c; 有效时间是1分钟&#xff0c;1分钟内只允许10访问 key> url &#xff1a; ip value> 可访问的次数 2&#xff1a;设置拦截器&#xff0c;拦截需要…

SpringCloud01--黑马【上】

SpringCloud01 1.认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff…

域名系统 DNS(计算机网络-应用层)

目录 互联网的域名结构 顶级域名 TLD(Top Level Domain) 域名服务器 域名系统 DNS 域名解析的过程 域名服务器的四种类型 本地域名服务器 DNS 协议 DNS缓存 DNS提供的其它服务 互联网的域名结构 域名系统 DNS (Domain Name System)&#xff0c;实现主机名&#xff08;域…

ActiveMQ高级特性和大厂面试常考重点

目录 一、引入消息队列之后该如何保证其高可用性 二、异步投递Async Sends 三、延迟投递和定时投递 四、ActiveMQ消费重试机制 五、死信队列 六、如何保证消息不被重复消费呢?幂等性问题你谈谈 一、引入消息队列之后该如何保证其高可用性 ActiveMQ集群模式_zoeil的博客-…

题:孤独的照片

Farmer John 最近购入了 NN 头新的奶牛&#xff0c;每头奶牛的品种是更赛牛&#xff08;Guernsey&#xff09;或荷斯坦牛&#xff08;Holstein&#xff09;之一。 奶牛目前排成一排&#xff0c;Farmer John 想要为每个连续不少于三头奶牛的序列拍摄一张照片。 然而&#xff0…

redis集群操作

Redis集群1 集群2 集群架构图3 集群细节4 集群搭建4.1.创建集群4.2.查看集群状态4.3.添加主节点4.4.添加从节点4.5.删除副本节点4.6.集群在线分片1 集群 Redis在3.0后开始支持Cluster(模式)模式&#xff0c;目前redis的集群支持节点的自动发现&#xff0c;支持slave-master选举…

微服务 Spring Boot Mybatis-Plus 整合 EasyPOI 实现 Excel 一对多 导入

文章目录⛄引言一、EasyPOI 实现Excel 的一对多导入 -- 代码实现⛅需求说明⚡核心源码实现二、Easy POI 实现一对多导入 -- 测试三、效果图展示⛵小结⛄引言 Excel导入 是 开发中 很常用的 功能 &#xff0c;本篇讲解 如何使用 Spring Boot MyBatis -Plus 整合 EasyPOI 实现E…

使用JDBC+javafx写一个简单功能齐全的图书管理系统

目录 1、JDBC的使用 2、对应包和Java文件的层级关系及对应的含义 3、数据库 4、相关代码 1&#xff09;、bookmanager包 Ⅰ、main函数 Ⅱ、utils包 Ⅲ、bean包 Ⅳ、controller包 2)resources(为资源文件包&#xff0c;可以看链接文章了解) Ⅰ、book包 Ⅱ、 login包…