吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18321|回复: 152
收起左侧

[Python 转载] 【笔记】python语句十大优雅写法

    [复制链接]
xian54966 发表于 2019-2-20 17:29
本帖最后由 xian54966 于 2019-2-20 17:31 编辑

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

1. 为多个变量赋值

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

常规方法:

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


a = 0
b = 1
c = 2

优雅方法:

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

a, b, c = 0, 1, 2

2. 序列解包

需要取出列表中的元素。

常规方法:

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


info = ['brucepk', 'man', 'python']
name = info[0]
sex = info[1]
tech = info[2]
print(name,sex,tech)

# 结果
brucepk man python

优雅方法:

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


info = ['brucepk', 'man', 'python']
name,sex,tech = info
print(name,sex,tech)

# 结果
brucepk man python

3. 优雅你的判断语句

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

常规方法:

x = -6
if x < 0:
    y = -x
else:
    y = x
print(y)

# 结果
6

优雅方法:

x = -6
y = -x if x<0 else x
print(y)

# 结果
6

4. 区间判断

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

常规方法:

score = 82
if score >=80 and score < 90:
    level = 'B'
print(level)

# 结果
B

优雅方法:

使用链式判断。


score = 82
if  80 <= score < 90:
    level = 'B'
print(level)

# 结果
B

5. 多个值符合条件判断

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

常规方法:

num = 1
if num == 1 or num == 3 or num == 5:
    type = '奇数'
print(type)

# 结果
奇数

优雅方法:

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


num = 1
if num in(1,3,5):
    type = '奇数'
print(type)

# 结果
奇数

6. 判断是否为空

判断元素是空还是非空。

常规方法:

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


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 为非空

```python

##优雅方法:

 if 后面的执行条件是可以简写的,只要条件 是非零数值、非空字符串、非空 list 等,就判断为 True,否则为 False。

```python

A,B,C =[1,3,5],{},''
if A:
    print('A 为非空')
if B:
    print('B 为非空')
if C:
    print('C 为非空')

# 结果
A 为非空

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

常规方法:

用 or 连接多个条件。


math,English,computer =90,80,88
if math<60 or English<60 or computer<60:
    print('not pass')

# 结果
not pass

优雅方法:

使用 any 语句。


math,English,computer =90,59,88
if any([math<60,English<60,computer<60]):
    print('not pass')

# 结果
not pass

8. 多条件内容判断全部成立

常规方法:

使用 and 连接条件做判断。


math,English,computer =90,80,88
if math>60 and English>60 and computer>60:
    print('pass')

# 结果
pass

优雅方法:

使用 all 方法。


math,English,computer =90,80,88
if all([math>60,English>60,computer>60]):
    print('pass')

# 结果
pass

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

常规方法:

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


L =['math', 'English', 'computer', 'Physics']
for i in range(len(L)):
    print(i, ':', L[i])

# 结果
0 : math
1 : English
2 : computer
3 : Physics

优雅方法:

使用 enumerate 函数。


L =['math', 'English', 'computer', 'Physics']
for k,v in enumerate(L):
    print(k, ':', v)

# 结果
0 : math
1 : English
2 : computer
3 : Physics

10. 循环语句优化

之前的文章 零基础学 Python 之列表生成式 中讲过列表生成时的用法,举例:生成 [1x1,2x2,3x3,4x4,5x5]。

常规方法:

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


L = []
for i in range(1, 6):
    L.append(i*i)
print(L) 

#结果:
[1, 4, 9, 16, 25]

优雅方法:

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


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

#结果:
[1, 4, 9, 16, 25]

兄弟们,热心值啊!!晚点还有一篇关于解析式的总结,绝对符合语句优雅的要求!

免费评分

参与人数 69吾爱币 +56 热心值 +58 收起 理由
Chen小妞 + 1 我很赞同!
Aleshaaaa + 1 + 1 用心讨论,共获提升!
NiGhT_Ray + 1 + 1 我很赞同!
52PJmumu + 1 + 1 我很赞同!
零砕砕 + 1 学习了!
haha42 + 1 + 1 我很赞同!
Chenleiwulala + 1 + 1 我很赞同!
易尘萧 + 1 赞同,但是感觉不习惯
huayin + 1 刚好在学,感谢
ctOS_ + 1 + 1 谢谢@Thanks!
Minions_ZQG + 1 + 1 谢谢@Thanks!
Reborn_chuye + 1 我很赞同!
Alex_1 + 1 用心讨论,共获提升!
polly521 + 1 用心讨论,共获提升!
Xiangshougudu + 1 + 1 我很赞同!
Romela_love2017 + 1 谢谢@Thanks!
lzawww + 1 + 1 用心讨论,共获提升!
陪你看星夜 + 1 我很赞同!
kaixiangyw + 1 + 1 谢谢@Thanks!
路漫漫w + 1 + 1 我很赞同!
风过了无痕 + 1 + 1 谢谢@Thanks!
qq619882 + 1 + 1 我很赞同!
望山人 + 1 我很赞同!
hncnxh + 1 感谢您的宝贵建议,我们会努力争取做得更好!
吾爱妹子涛 + 1 + 1 热心回复!
shixinyups + 1 学习了
wytjws + 1 我很赞同!
biaggi + 1 + 1 我很赞同!
limu1433223 + 1 + 1 谢谢分享
zwk123456 + 1 + 1 谢谢@Thanks!
topcss + 1 + 1 很不错。
非法菜鸟 + 1 + 1 我很赞同!
Kaiter_Plus + 1 + 1 哇,不错的文章,吾爱币和热心值都给你了!
矛盾迷茫 + 1 + 1 我很赞同!
恰块回锅肉 + 1 + 1 我很赞同!
zhanyuezi + 1 + 1 用心讨论,共获提升!
hbw123 + 1 我很赞同!
Tail_Tail + 1 很有用,收藏了
chenfangshuai + 1 + 1 谢谢@Thanks!
慢慢走,欣赏啊 + 1 + 1 热心回复!
jay-j + 1 + 1 我很赞同!
至色调色 + 1 + 1 谢谢@Thanks!
IT的心 + 1 + 1 用心讨论,共获提升!
叶樱枫 + 1 + 1 谢谢@Thanks!
期年 + 1 + 1 谢谢@Thanks!
雨夜殇雪 + 1 + 1 用心讨论,共获提升!
mink0325 + 1 谢谢@Thanks!
qsuron + 1 用心讨论,共获提升!
石墨方 + 1 谢谢@Thanks!
Momentary刘 + 1 + 1 谢谢@Thanks!
wueryi + 1 热心回复!
我我我次奥 + 1 谢谢@Thanks!
ihappyes + 1 + 1 谢谢@Thanks!
wongJzzz + 1 + 1 我很赞同!
小雪龍 + 1 谢谢@Thanks!
jusir7 + 1 谢谢@Thanks!
w4526423 + 1 + 1 谢谢@Thanks!
niebaohua + 1 + 1 我很赞同!
飞羽abss + 1 热心回复!
wslaoding + 1 不错不错,学到几招。
千颜风神 + 1 热心回复!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
风之翼hzk + 1 + 1 热心回复!
吾爱支持 + 1 谢谢@Thanks!
冷凯 + 1 热心回复!
kkk55555 + 1 + 1 用心讨论,共获提升!
hustlzp + 3 + 1 我很赞同!
温馨提示 + 1 + 1 热心回复!
173202430 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

null119 发表于 2019-2-28 11:39
不是完全赞同,代码优雅与否并不一定与代码长度、行数成正比,最基本的一点是能让读代码的人可以准确理解,而过与简洁的代码实际上更容易让人难以理解。
纯属个人看法

免费评分

参与人数 5吾爱币 +4 热心值 +3 收起 理由
qkingq + 1 + 1 我也认为 首先是简单明了逻辑清晰,然后是运行效率高。单纯的为了缩短代码.
nanlingtt + 1 我很赞同!
jokebox + 1 赞同,虽然简洁了 但是看着更别扭,不容易那么内容直观了
hafeng45 + 1 + 1 我很赞同!
xouou + 1 x&amp;gt;0?x:-x 感觉优雅被误解了,不如叫作

查看全部评分

mini-afoot 发表于 2019-5-5 11:24
hustlzp 发表于 2019-2-20 17:41
hui00000 发表于 2019-2-20 17:45
很不错 学习了  感谢分享
西门一笑 发表于 2019-2-20 17:46
确实很优雅,继续学习
yc19951005 发表于 2019-2-20 17:47
不错 学习了 期待可以一直更新
erui2018 发表于 2019-2-20 17:59
跟着楼主学习Python程序代码优雅编写,受益匪浅。
erui2018 发表于 2019-2-20 18:05
楼主,你有python的学习材料吗?可以分享一下吗?
还有,你写的这些python文章,有电子版下载就好了。
Jacky9771 发表于 2019-2-20 18:29
受教了!

感谢!
kkk55555 发表于 2019-2-20 18:33
哇,谢谢楼主,学习学习!
吾爱支持 发表于 2019-2-20 20:05
感谢楼主分享……我一直敬重学习的人,
送上我的小心心和祝福……收藏了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 18:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表