背景:介绍两种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. Codeforces Round #746

    挺喜欢这场题目的 A: 水,不写了 B: Hemose Shopping 嘲讽自己一下啦~真的是caii 题意:一个数列,我们通过交换两个点(两点满足距离大于等于\(x\)),问能否排序成功. 思路: ...

  2. 关于一些lrzsz的知识

    问题:如何从windows轻松上传文件到Linux? 方法:容器里面:apt-get update && apt-get install lrzsz 有yum的情况:yum -y in ...

  3. 【SpringSecurity系列1】基于SpringSecurity实现前后端分离无状态Rest API的权限控制

    源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...

  4. 11.Firewalld防火墙

    Firewalld防火墙 目录 Firewalld防火墙 Firewalld概述 Firewalld Firewalld和iptables的关系 netfilter Firewalld/iptable ...

  5. java单链表基本操作

    /** * */ package cn.com.wwh; /** * @Description:TODO * @author:wwh * @time:2021-1-18 19:24:47 */ pub ...

  6. 使用.NetCore自带的后台作业,出入队简单模拟生产者消费者处理请求响应的数据

    环境:Core:3.1的项目 说明:由于该方案为个人测试项目,重启时队列中的部分数据很可能会丢失, 对数据有要求的该方案不适用,不能照搬需要持久化处理, 另外发布到Linux Docker中通常不会自 ...

  7. sql-删除重复数据-oracle

    删除重复数据 准备重复数据 create table mystudent ( stuno number , stuname varchar2(20), stuage number ); insert ...

  8. 抓到 Netty 一个 Bug,顺带来透彻地聊一下 Netty 是如何高效接收网络连接的

    本系列Netty源码解析文章基于 4.1.56.Final版本 对于一个高性能网络通讯框架来说,最最重要也是最核心的工作就是如何高效的接收客户端连接,这就好比我们开了一个饭店,那么迎接客人就是饭店最重 ...

  9. 如何用Python实现配置热加载?

    背景 由于最近工作需求,需要在已有项目添加一个新功能,实现配置热加载的功能.所谓的配置热加载,也就是说当服务收到配置更新消息之后,我们不用重启服务就可以使用最新的配置去执行任务. 如何实现 下面我分别 ...

  10. android studio取消设置代理

    看标题感觉就是一个简单的设置,其实只是个大坑啊 https://www.jianshu.com/p/bb6d2bcdd5b5 android studio内虽然设置了 no proxy,但是没起作用, ...