十种Python优雅的写法,你值得拥有!

0、前言

Python是我最喜欢的语言,没有之一!

Python 是一门语法很简洁的语言,它的设计哲学就是:

优美胜于丑陋, 明了胜于晦涩,简单胜过复杂。

下面就给大家介绍几种Pythonic的写法,让你的代码简洁明了,又不失逼格!我由浅入深,先介绍简单的一些trick,再到高级用法。

注:以下代码都是基于Python 3.X

1、多变量赋值

常规写法

a = 1
b = 2
c = 3

优雅写法

a, b, c = 1, 2, 3

2、序列解包

常规写法

student = ['Jack', 23, 'man']
name = student[0]
age = student[1]
sex = student[2]
print('name: %s, age: %s, sex: %s' % (name, age, sex))

优雅写法

student = ['Jack', 23, 'man']
name, age, sex = student
print('name: %s, age: %s, sex: %s' % (name, age, sex))

3、三元表达式

常规写法

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

优雅写法

x = -3
y = -1 if x < 0 else 1
print(y)

4、区间判断

常规写法

score = 90
if score >= 0 and score < 60:
    print('挂科')
else:
    print('通过')

优雅写法

score = 90
if 0 <= score < 60:
    print('挂科')
else:
    print('通过')

5、多个值符合条件判断

常规写法

status_code = 0
if status_code == -1 or status_code == -2 or status_code == -3:
    print('fail')
else:
    print('success')

优雅写法

status_code = 0
if status_code in [-1, -2, -3]:
    print('fail')
else:
    print('success')

6、判断是否为空

常规写法

A, B, C = [1, 2, 3], {}, ''
if len(A) > 0:
    print('A非空')
if len(B) > 0:
    print('B非空')
if len(C) > 0:
    print('C非空')

优雅写法

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

7、多条件判断至少一个成立

常规写法

math, english, computer = 30, 90, 80
if math < 60 or english < 60 or computer < 60:
    print('挂科')
else:
    print('通过')

优雅写法

math, english, computer = 30, 90, 80
if any([math < 60, english < 60, computer < 60]):
    print('挂科')
else:
    print('通过')

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

常规写法

math, english, computer = 70, 90, 80
if math > 60 and english > 60 and computer > 60:
    print('通过')
else:
    print('挂科')

优雅写法

math, english, computer = 70, 90, 80
if all([math > 60, english > 60, computer > 60]):
    print('通过')
else:
    print('挂科')

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

这个非常常用,特别是遍历列表的时候,我们经常需要同时获取到下标和元素的值。

常规写法

pets = ['cat', 'dog', 'rabbit', 'bird']
for i in range(len(pets)):
    print('%s : %s' % (i, pets[i]))

优雅写法

pets = ['cat', 'dog', 'rabbit', 'bird']
for i, pet in enumerate(pets):
    print('%s : %s' % (i, pet))

比起通过pets[i]去获取元素的方式,直接用enumerate返回下标和元素更方便。

10、列表推导式

这个是我最喜欢、也是最常用的一种用法。好不夸张的说,一行顶十行

需求:生成一个区间为[0-9]的列表

常规写法

nums = []
for i in range(10):
    nums.append(i)
print(nums)
# output: 
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

优雅写法

nums = [i for i in range(10)]
print(nums)
# output: 
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

结语

小伙伴们,你们觉得还有哪些更Pythonic的写法呢?欢迎在留言区分享,互相促进一下哦。

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值