背景:介绍两种python用于语句优化的用法
一、推导式
1.推导式简介:
Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
支持:列表(list)、元组(tuple)、集合(set)、 字典(dict)
如原有的修改列表(list)内元素(数字)+1需要使用的循环语句:
#原有的修改列表(list)内元素(数字)+1
l1 = [1,3,5,7,9]
for i in range(len(l1)):
l1[i]+=1
print(l1)
查看运行结果:
如使用推导式,语句将更加简介
 
2.列表推导式:
#2.列表推导式:
list_before = [1,3,5,7,9]
list_after = [i+1 for i in list_before]
print(list_after)
查看运行结果:
 
3.元组推导式
#3.元组推导式:
tuple_before = (1,2,3,4,5)
tuple_after =tuple(i+1 for i in tuple_before)
print(tuple_after)
查看运行结果:
 
4.集合推导式:
#4.集合推导式:
set_before = {0,1,2,3,4}
set_after = {i+1 for i in set_before}
print(set_after)
查看运行结果:
 
5.字典推导式(修改字典的key与value):
#5.字典推导式
dict_befory = {"k1":1,"k2":2,"k3":3}
dict_after = {"test-"+x:dict_befory[x]+1 for x in dict_befory}
print(dict_after)
查看运行结果:
 
二、海象运算符(python3.8+)
1.概念:
海象运算符:=作为一项新奇的python语法,在最新发布的python3.8中被首次提出来。
海象运算符即一个变量名后跟一个表达式或者一个值,这个和赋值运算符 = 类似,可以看作是一种新的赋值运算符。
在合适的场景中使用海象运算符可以降低程序复杂性,简化代码
 
2.使用场景:
(1)用于 if-else 条件表达式
(1.1)原有写法:
a = 0
if a < 15:
print("hello,walrus operator!")
查看运行结果:
(1.2)海象运算符:
if a := 15 > 10:
print("hello,walrus operator!")
查看运行结果:
(2) 用于 while 循环
(2.1)原有写法:
count = 5
while count:
print("hello,walrus operator!")
count -= 1
查看运行结果:
(2.2)海象运算符:
count = 5
while (count := count - 1)+1: # 需要加1是因为执行输出前count就减1了
print("hello,walrus operator!")
查看运行结果:
(3)用于列表推导式
(3.1)原有写法:
nums1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
count = 1
def f(x):
global count
print(f"f(x)函数运行了{count}次")
count += 1
return x ** 2
nums2 = [f(i) for i in nums1 if f(i) > 50]
print(nums2)
查看运行结果:
(3.2)海象运算符:
nums1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
count = 1
def f(x):
global count
print(f"f(x)函数运行了{count}次")
count += 1
return x ** 2
nums2 = [j for i in nums1 if (j := f(i)) > 50]
print(nums2)
查看运行结果:
可以看出:
使用海象运算符时:三个数字满足列表推导式的条件,节省 3次的函数调用。当程序数据巨大的时候,这将起到提升性能的作用。
 

python推导式与海象运算符的更多相关文章

  1. python推导式pythonic必备【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  2. python推导式pythonic必备

    编程规范 今天公司新出了一套Python编程规范2.0,一直觉得自己写代码路子有点野,所以仔细的看了下. 多数的内容在网上都能搜到,但有几点需要说说 让我觉得羞愧的注释率 公司要求代码注释行,占代码总 ...

  3. Python推导式详解,带你写出比较精简酷炫的代码

    Python推导式详解,带你写出比较精简酷炫的代码 前言 1.推导式分类与用法 1.1 列表推导 1.2 集合推导 1.3 字典推导 1.4 元组推导?不存在的 2.推导式的性能 2.1 列表推导式与 ...

  4. Python推导式

    Python推导式 推导式:是Python中提供的一个非常方便的功能,可以通过一行代码实现创建 list.dict.tuple.set的同时初始化一些值. 1.列表推到式 # -*- coding: ...

  5. python 推导式和迭代器、生成器

    1.常用推导式 推导式是从一个或者多个迭代器快速简洁创建数据结构的一种方法. 1.1 _ 列表推导式 最简单的形式:  [exprssion for item in iterable] 示例:  nu ...

  6. python 推导式

    推导式又称解析式,是Python的一种独有特性.目的是可以从一个数据序列推导出另一个数据序列,适用于python 的list ,dict 和集合 list中的推导式: _list=[i for i i ...

  7. Python 推导式、迭代器、生成器、模块和包

    一.推导式 (一).列表推导式(集合推导式也同理于此) 利用列表推导式,取出1-20内所有偶数 li = [i for i in range(1, 21) if i % 2 == 0] # 如果只有一 ...

  8. Python—推导式

    推导式 推导式:comprehensions(又称解析式),是Python的一种独有特性,相当于语法糖的存在,推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2 ...

  9. 奇技淫巧,还是正统功夫? - Python推导式最全用法

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

随机推荐

  1. 05-STL

    Day01 笔记 1 STL概论 1.1 STL六大组件 1.1.1 容器.算法.迭代器.仿函数.适配器.空间配置器 1.2 STL优点 1.2.1 内建在C++编译器中,不需要安装额外内容 1.2. ...

  2. CabloyJS - GitHub Readme

    简体中文 | English CabloyJS CabloyJS是一款顶级NodeJS全栈业务开发框架, 基于KoaJS + EggJS + VueJS + Framework7 文档 官网 & ...

  3. 【抬杠C#】如何实现接口的base调用

    背景 在三年前发布的C#8.0中有一项重要的改进叫做接口默认实现,从此以后,接口中定义的方法可以包含方法体了,即默认实现.不过对于接口的默认实现,其实现类或者子接口在重写这个方法的时候不能对其进行ba ...

  4. 【C#/VB.NET】 将PDF转为SVG/Image, SVG/Image转PDF

    SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形.它在放大或者改变尺寸的情况下其图形质量不会有所损失,且与 JPG 和 GIF 图像比起 ...

  5. 介绍一个好用的dao层与mybatis互跳的idea插件MyBatisCodeHelperPro

    一次点击 File--> Settings --> Plugins -->搜索MyBatisCodeHelperPro,点击获取,重启idea即可 接下来看效果,点击小企鹅就可以相互 ...

  6. Kali2019渗透环境配置

    一.系统安装 二.基础配置 # 配置源 vim /etc/apt/sources.list # kali官方源 deb http://http.kali.org/ kali-rolling main ...

  7. 有关于weiphp2.00611上传sae的一些注意(图片上传解决方案)

    一.安装中注意的事项  安装时使用的系统为weiphp2.0611    版本     1.将所有文件上传到代码库中     2.按照步骤进行安装weiphp,注意在数据库导入的时候需要手动导入.  ...

  8. Redis布隆过滤器和布谷鸟过滤器

    一.过滤器使用场景:比如有如下几个需求:1.原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中? 解决办法一:将10亿个号码存入数据库中,进行数据库查询,准 ...

  9. Python爬虫+数据可视化教学:分析猫咪交易数据

    猫猫这么可爱 不会有人不喜欢吧: 猫猫真的很可爱,和我女朋友一样可爱~你们可以和女朋友一起养一只可爱猫猫女朋友都有的吧?啊没有的话当我没说-咳咳网上的数据太多.太杂,而且我也不知道哪个网站的数据比较好 ...

  10. 【时序数据库InfluxDB】Windows环境下配置InfluxDB+数据可视化,以及使用 C#进行简单操作的代码实例

    前言:如题.直接上手撸,附带各种截图,就不做介绍了. 1.influxDB的官网下载地址  https://portal.influxdata.com/downloads/ 打开以后,如下图所示,可以 ...