python代码书写_Python代码的优雅写法,让代码更简洁

我们都知道,Python 的设计哲学是「优雅」、「明确」、「简单」。这也许很多人选择 Python 的原因。但是我收到有些伙伴反馈,他写的 Python 并不优雅,甚至很臃肿,那可能是你的姿势不对哦!今天就给大家带来 Python 语句的十大优雅之法。

为多个变量赋值

有时,有多个变量需要赋值,这时你会怎么赋值呢?

常规方法:

常规方法是给变量逐个赋值。

Python

a = 0

b = 1

c = 2

1

2

3

a=0

b=1

c=2

优雅方法:

直接按顺序对应一一赋值。

Python

a, b, c = 0, 1, 2

1

a, b, c = 0, 1, 2

序列解包

需要取出列表中的元素。

常规方法:

一般我们知道可以通过下标获取具体元素。

Python

info = ['brucepk', 'man', 'python']

name = info[0]

sex = info[1]

tech = info[2]

print(name,sex,tech)

# 结果

brucepk man python

1

2

3

4

5

6

7

8

info=['brucepk','man','python']

name=info[0]

sex=info[1]

tech=info[2]

print(name,sex,tech)

# 结果

brucepkmanpython

优雅方法:

给出对应变量接收所有元素。

Python

info = ['brucepk', 'man', 'python']

name,sex,tech = info

print(name,sex,tech)

# 结果

brucepk man python

1

2

3

4

5

6

info=['brucepk','man','python']

name,sex,tech=info

print(name,sex,tech)

# 结果

brucepkmanpython

优雅你的判断语句

我们用判断语句来定义一个绝对值函数。

常规方法:

Python

x = -6

if x < 0:

y = -x

else:

y = x

print(y)

# 结果

6

1

2

3

4

5

6

7

8

9

x=-6

ifx<0:

y=-x

else:

y=x

print(y)

# 结果

6

优雅方法:

Python

x = -6

y = -x if x<0 else x

print(y)

# 结果

6

1

2

3

4

5

6

x=-6

y=-xifx<0elsex

print(y)

# 结果

6

区间判断

使用 and 连续两次判断的语句,条件都符合时才执行语句。

常规方法:

Python

score = 82

if score >=80 and score < 90:

level = 'B'

print(level)

# 结果

B

1

2

3

4

5

6

7

score=82

ifscore>=80andscore<90:

level='B'

print(level)

# 结果

B

优雅方法:

使用链式判断。

Python

score = 82

if 80 <= score < 90:

level = 'B'

print(level)

# 结果

B

1

2

3

4

5

6

7

score=82

if80<=score<90:

level='B'

print(level)

# 结果

B

多个值符合条件判断

多个值任意一个值符合条件即为 True 的情况。

常规方法:

Python

num = 1

if num == 1 or num == 3 or num == 5:

type = '奇数'

print(type)

# 结果

奇数

1

2

3

4

5

6

7

num=1

ifnum==1ornum==3ornum==5:

type='奇数'

print(type)

# 结果

奇数

优雅方法:

使用关键字 in,让你的语句更优雅。

Python

num = 1

if num in(1,3,5):

type = '奇数'

print(type)

# 结果

奇数

1

2

3

4

5

6

7

num=1

ifnumin(1,3,5):

type='奇数'

print(type)

# 结果

奇数

判断是否为空

判断元素是空还是非空。

常规方法:

一般我们想到的是 len() 方法来判断元素长度,大于 0 则为非空。

Python

A,B,C =[1,3,5],{},''

if len(A) > 0:

print('A 为非空')

if len(B) > 0:

print('B 为非空')

if len(C) > 0:

print('C 为非空')

# 结果

A 为非空

1

2

3

4

5

6

7

8

9

10

A,B,C=[1,3,5],{},''

iflen(A)>0:

print('A 为非空')

iflen(B)>0:

print('B 为非空')

iflen(C)>0:

print('C 为非空')

# 结果

A为非空

优雅方法:

在之前的文章 零基础学 python 之 if 语句 中讲过,if 后面的执行条件是可以简写的,只要条件 是非零数值、非空字符串、非空 list 等,就判断为 True,否则为 False。

Python

A,B,C =[1,3,5],{},''

if A:

print('A 为非空')

if B:

print('B 为非空')

if C:

print('C 为非空')

# 结果

A 为非空

1

2

3

4

5

6

7

8

9

10

A,B,C=[1,3,5],{},''

ifA:

print('A 为非空')

ifB:

print('B 为非空')

ifC:

print('C 为非空')

# 结果

A为非空

多条件内容判断至少一个成立

常规方法:

用 or 连接多个条件。

Python

math,English,computer =90,80,88

if math<60 or English<60 or computer<60:

print('not pass')

# 结果

not pass

1

2

3

4

5

6

math,English,computer=90,80,88

ifmath<60orEnglish<60orcomputer<60:

print('not pass')

# 结果

notpass

优雅方法:

使用 any 语句。

Python

math,English,computer =90,59,88

if any([math<60,English<60,computer<60]):

print('not pass')

# 结果

not pass

1

2

3

4

5

6

math,English,computer=90,59,88

ifany([math<60,English<60,computer<60]):

print('not pass')

# 结果

notpass

多条件内容判断全部成立

常规方法:

使用 and 连接条件做判断。

Python

math,English,computer =90,80,88

if math>60 and English>60 and computer>60:

print('pass')

# 结果

pass

1

2

3

4

5

6

math,English,computer=90,80,88

ifmath>60andEnglish>60andcomputer>60:

print('pass')

# 结果

pass

优雅方法:

使用 all 方法。

Python

math,English,computer =90,80,88

if all([math>60,English>60,computer>60]):

print('pass')

# 结果

pass

1

2

3

4

5

6

math,English,computer=90,80,88

ifall([math>60,English>60,computer>60]):

print('pass')

# 结果

pass

遍历序列的元素和元素下标

常规方法:

使用 for 循环进行遍历元素和下标。

Python

L =['math', 'English', 'computer', 'Physics']

for i in range(len(L)):

print(i, ':', L[i])

# 结果

0 : math

1 : English

2 : computer

3 : Physics

1

2

3

4

5

6

7

8

9

L=['math','English','computer','Physics']

foriinrange(len(L)):

print(i,':',L[i])

# 结果

0:math

1:English

2:computer

3:Physics

优雅方法:

使用 enumerate 函数。

Python

L =['math', 'English', 'computer', 'Physics']

for k,v in enumerate(L):

print(k, ':', v)

# 结果

0 : math

1 : English

2 : computer

3 : Physics

1

2

3

4

5

6

7

8

9

L=['math','English','computer','Physics']

fork,vinenumerate(L):

print(k,':',v)

# 结果

0:math

1:English

2:computer

3:Physics

循环语句优化

之前的文章 Python的列表生成式的基本用法 中讲过列表生成时的用法,举例:生成 [1×1,2×2,3×3,4×4,5×5]。

常规方法:

使用简单的 for 循环可以达到目的。

Python

L = []

for i in range(1, 6):

L.append(i*i)

print(L)

#结果:

[1, 4, 9, 16, 25]

1

2

3

4

5

6

7

L=[]

foriinrange(1,6):

L.append(i*i)

print(L)

#结果:

[1,4,9,16,25]

优雅方法:

使用列表生成式,一行代码搞定。

Python

print([x*x for x in range(1, 6)])

#结果:

[1, 4, 9, 16, 25]

1

2

3

4

print([x*xforxinrange(1,6)])

#结果:

[1,4,9,16,25]

Python 这些优雅的写法学会了吗?自己赶紧动手试试吧。

此文章如果对你有点帮忙的话希望大家能多给点支持,有什么问题欢迎在后台联系我,也可以在后台加入技术交流群,群里有大神,可以一起交流学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C 怎么处理windows路径_python学习笔记-7:文件读写之文件与文件路径

文件关键属性:路径文件名根据已知的文件路径生成包含正确路径分隔符的文件路径字符串&#xff1a;import osstt os.path.join(usr,bin,spam)print(stt)#usrbinspamwindows的路径分隔符为&#xff0c;字符串中使用需要转义字符&#xff0c;因此应输入为当前工作目录程序运行时&…

android手机图标 足球球星,世界足坛九大现役球星标志性绰号,第一名所有人都服!...

原标题&#xff1a;世界足坛九大现役球星标志性绰号&#xff0c;第一名所有人都服&#xff01;9&#xff0c;“大腿”桑切斯自打智利天王桑切斯离开当年无比辉煌的巴萨加盟阿森纳后&#xff0c;就被无数球迷冠以“大腿”的绰号&#xff0c;当然这完全源自于他在英超阿森纳队中极…

mysql 互为主备 宕机 数据丢失_Devops部署-mysql主备多从搭建

​双主多从架构原理介绍IP端口账号密码服务名10.1.1.23306root/syncabc123!数据库A10.1.1.33306root/syncabc123!数据库B10.1.1.43306root/syncabc123!数据库C1.两台mysql都可读写&#xff0c;互为主备&#xff0c;默认只使用一台&#xff08;masterA&#xff09;负责数据的写入…

sourcetree mac 免登录_「vscode remote ssh 免登录」mac

如果你只知道传统的ssh操作&#xff0c;或者sftp/ftp上传下载操作&#xff0c;那可能有点太low了。强烈推荐你使用 vscode remote ssh。举个栗子来形象比喻一下&#xff1a;钥匙开门 和 指纹开门 的区别。已经用 vscode remote ssh 功能有很久了&#xff0c;这种体验真的太棒了…

signature=9e6873686326b073f8f457fa0e6c2f70,Signature required

摘要&#xff1a;Model comprehension and effective use and reuse of complex subsystems are problems currently encountered in the automotive industry. To address these problems we present a technique for extracting, presenting, and making use of signatures f…

python中汉字与变量不可同时出现_Python语言应用培训课(选择练习)

第一部分1、多选题&#xff1a;Python在金融中的运用包括( )选项&#xff1a;A:绩效分析B:风险分析C:程序化交易D:量化分析答案: 【绩效分析;风险分析;程序化交易;量化分析】第二部分1、判断题&#xff1a;python语言支持中文字符作为变量名称&#xff0c;但具有语法意义的符号…

python find函数 和index的区别_find方法和index方法的区别

Python find()&#xff1a; find 方法检测字符串中是否包含子字符串 str &#xff0c;如果指定 beg&#xff08;开始&#xff09; 和 end&#xff08;结束&#xff09; 范围&#xff0c;则检查是否包含在指定范围内&#xff0c;如果包含子字符串返回开始的索引值&#xff0c;否…

html5图像映射坐标怎么看,如何将AxesImage中的坐标映射到已保存图像文件中的坐标?...

这是尝试从matplotlib获取精确像素值的更令人困惑的部分之一. Matplotlib将绘制精确像素值的渲染器与绘制图形和轴的画布分开.基本上,最初创建(但尚未显示)图形时存在的渲染器不一定与显示图形或将其保存到文件时使用的渲染器相同.你正在做的是正确的,但是它使用的是初始渲染器…

vue获取元素距离页面顶部的距离_VUE实时监听元素距离顶部高度的操作

效果图如下所示.html今日热门今日热销.jsmounted(){window.addEventListener(scroll,this.handleScrollx,true)},methods: {handleScrollx() {console.log(滚动高度,window.pageYOffset)console.log(距离顶部高度,this.$refs.pronbit.getBoundingClientRect().top)},}补充知识&…

鸿蒙首饰用什么合成,天下HD鸿蒙炼炉是什么?鸿蒙炼炉讲解

在玩天下HD的时候各位又是否知道鸿蒙炼炉是什么呢&#xff1f;其实鸿蒙炼炉是游戏之中一个很重要的系统&#xff0c;而对于这个系统本次小编就给各位带来了鸿蒙炼炉讲解。或许各位都有用到天下HD的鸿蒙炼炉系统&#xff0c;但是各位又是否了解鸿蒙炼炉系统是怎么样的呢&#xf…

如何区分网线是几类的_小移课堂 | 网线这样选,网速才能嗖嗖的!

在家宅到长蘑菇的日子里最亲近的&#xff0c;除了家人&#xff0c;就是WiFi想必大家碰上网速不好的时候都会很抓狂为什么家里的网络明明签约的是千兆可网速一直上不去?网线&#xff0c;是卡住网速的关键因素&#xff01;问网线不是通用的吗&#xff1f;还要用专门的网线吗&…

navicat premium 链接postgresql 无法加载表_PostgreSQL 每周新闻 2020311

PostgreSQL 每周新闻 2020-3-11英文原文地址&#xff1a;https://postgresweekly.com/issues/346Postgres子事务和性能本文展示了过度使用子事务对性能的影响&#xff0c;以及如何诊断在您的数据库里是否有这样的问题。Laurenz AlbePostgreSQL匿名器0.6&#xff1a;假名化和改进…

python无法打开_如何解决Windows命令行无法运行python文件?

我在使用windows的命令行运行python文件&#xff0c;但是每次出现的都是这种情况我设置了Path&#xff0c;D:Python&#xff0c;后来又设置了个PythonPath&#xff0c;添加了Lib和DLLS的路径&#xff0c;但是没用。 我觉得还是设置环境变量的问题&#xff0c;请问大家有什么办法…

iis7设置html支持asp,Win7下启用IIS7配置ASP运行环境的详细方法

第一次在windows7下配置IIS&#xff0c;虽然有丰富的xp下配置IIS的经验&#xff0c;但还是会遇到不少的问题。特别是对入门者来说&#xff0c;搞清一些东西还是挺费时间的。其实win7下的IIS7配置过程是非常简单的。下面让seo博客来详细的介绍一下win7下配置IIS7环境运行ASP网站…

java 手写阻塞队列_Java阻塞队列的实现

阻塞队列与普通队列的区别在于&#xff0c;当队列是空的时&#xff0c;从队列中获取元素的操作将会被阻塞&#xff0c;或者当队列是满时&#xff0c;往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞&#xff0c;直到其他的线程往空的队列插入新…

python语句解释_深入理解python with 语句

深入理解python with 语句 python中with 语句作为try/finally 编码范式的一种替代, 适用于对资源进行访问的场合&#xff0c;确保不管使用过程中是否发生异常都会执行必要的”清理”操作&#xff0c;释放资源&#xff0c;比如文件使用后自动关闭、线程中锁的自动获取和释放等 1…

js怎么设置z index.html,HTML5 Canvas set z-index

j0kEli Stone提出了一个问题&#xff1a;HTML5 Canvas set z-index&#xff0c;或许与您遇到的问题类似。回答者markE给出了该问题的处理方式&#xff1a;Yes..kind of yes. You can use compositing to "draw behind" existing pixels.ctx.globalCompositeOperation…

python搭建分布式集群_Spark完全分布式集群搭建【Spark2.4.4+Hadoop3.2.1】

一.安装Linux需要&#xff1a;3台CentOS7虚拟机注意&#xff1a;虚拟机的网络设置为NAT模式&#xff0c;NAT模式可以在断网的情况下连接上虚拟机而桥架模式不行&#xff01;二.设置静态IP跳转目录到&#xff1a;修改IP设置&#xff1a;备注&#xff1a;执行scp命令拷贝设置文件…

ajax post提交数据_详解Ajax异步加载

前言&#xff1a;作为资深球迷&#xff0c;提起Ajax&#xff0c;第一反应想到的是阿贾克斯&#xff0c;那个曾培养出伊布&#xff0c;范德法特&#xff0c;苏亚雷斯&#xff0c;亨特拉尔等一众球星的荷甲著名球队。很显然&#xff0c;我们今天说的Ajax&#xff0c;跟足球没有任…

win10改计算机用户名,win10系统修改本地账号用户名的操作方法

很多小伙伴都遇到过对win10系统修改本地账号用户名进行设置的困惑吧&#xff0c;一些朋友看过网上对win10系统修改本地账号用户名设置的零散处理方法&#xff0c;并没有完完全全明白win10系统修改本地账号用户名的操作方法非常简单&#xff0c;只需要1、首先打开Win10控制面板&…