背景:介绍两种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. java接口多实现注入方法总结

    1. 单实现接口注入方法 1.1 构造注入(推荐) @RequiredArgsConstructor public class TestController { // 其只有一个具体的实现类 priv ...

  2. yolov5训练自定义数据集

    yolov5训练自定义数据 step1:参考文献及代码 博客 https://blog.csdn.net/weixin_41868104/article/details/107339535 githu ...

  3. 「ARC138E」Decreasing Subsequence(n logn 做法)

    考虑一张 \(n\) 个点的图(\(V=\{0,1,\cdots,n\}\)):点 \(i\) 连向 \(a_i-1\),即 \(\text{index}\) 连向 \(\text{value}\). ...

  4. VSCode进一步深入了解学习

    紧接上一章节趁热打铁吧,未关注博主的记得关注哦! VSCode设置 (1)关闭预览模式 我们在 VScode 上打开一个新文件的话会覆盖掉以前的文件,这是因为 VSCode 默认开启了预览模式,预览模 ...

  5. torch.ones_like(),expand_as(),expend()等torch.repeat

    https://blog.csdn.net/Arthur_Holmes/article/details/104267662 https://blog.csdn.net/weixin_39568781/ ...

  6. Linux常用命令-创建用户修改密码-useradd

    命令简介 useradd/userdel 创建新用户/删除用户,需要管理员权限操作. 在创建用户时,如果不配置密码,用户的默认密码是不可用的,所以,useradd命令一般与passwd命令配合使用,下 ...

  7. 17.Nginx 重写(location rewrite)

    Nginx 重写(location / rewrite) 目录 Nginx 重写(location / rewrite) 常见的nginx正则表达式 location lication的分类 loca ...

  8. 使用aggregation API扩展你的kubernetes API

    Overview What is Kubernetes aggregation Kubernetes apiserver aggregation AA 是Kubernetes提供的一种扩展API的方法 ...

  9. react的setState到底是同步还是异步

    在介绍这个问题之前,我们先来看一下一个例子: state = {number:1};componentDidMount(){this.setState({number:3})console.log(t ...

  10. 使用MySqlBulkLoader批量插入数据

    最近在项目中遇到插入几万.几十万.几百万的数据到MYSQL数据库,使用EF插入会发现插入速度非常慢的场景, 数据量非常大时EF插入需要几十分钟,甚至几个小时,这样子的速度肯定不是我们所期望的. 后面经 ...