[关闭]
@myles 2019-01-18T11:30:19.000000Z 字数 1383 阅读 712

语法糖学习

Python基础


学习文档:
https://www.cnblogs.com/yyds/p/6281453.html

一、什么是语法糖

“语法糖”,从字面上看应该是一种语法。“糖”,甜不甜,是的很甜,其实就可以理解语法中的“糖”,就是语法中给我们带来了“简单、简洁,易用”的甜头。

其实我们如果理解了语法糖,会发现没有这些被称为“语法糖”的语法,我们也能实现相应的功能,而“语法糖”仅仅是使我们可以更加简洁、快速的实现我们想实现的功能而已。

只是在Python中,解释器会把这些“特定格式的语法”翻译成原本那样复杂的代码逻辑而已,没有什么太高深的东西。

二、python 常见语法糖

2.1 实例学习

(1) 三元表达式

  1. In [29]: x = 10
  2. In [30]: print(x*x) if x==10 else print(x/2)
  3. 100

(2) 列表推导式

  1. In [32]: [x*x for x in range(10)]
  2. Out[32]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  1. # 只对 x>20 的元素进行后续 x*10 的操作
  2. In [34]: L = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  3. In [35]: [x*10 for x in L if x> 20]
  4. Out[35]: [250, 360, 490, 640, 810]
  1. # 计算两个集合的全排列,并将结果作为保存至一个新的列表中
  2. In [43]: L1
  3. Out[43]: ['香蕉', '苹果', '橙子']
  4. In [44]: L2
  5. Out[44]: ['可乐', '牛奶']
  6. In [45]: [(x,y) for x in L1 for y in L2]
  7. Out[45]:
  8. [('香蕉', '可乐'),
  9. ('香蕉', '牛奶'),
  10. ('苹果', '可乐'),
  11. ('苹果', '牛奶'),
  12. ('橙子', '可乐'),
  13. ('橙子', '牛奶')]

eg4: 基本实例之“字典转列表”(单个元素格式(key,value))

  1. In [40]: D = {'Tom': 15, 'Jerry': 18, 'Peter': 13}
  2. In [41]: [(k,v) for k,v in D.items()]
  3. Out[41]: [('Tom', 15), ('Jerry', 18), ('Peter', 13)]

(3) 生成器

(4) with 语句

  1. with open('d:/imgs/xxx.jpg','wb') as f:
  2. f.write(re.content)

(5) 三元表达式与列表推导结合使用

  1. In [52]: L = ['TOM', 'Peter', 10, 'Jerry']
  2. In [53]: [x.lower() if isinstance(x,str) else x for x in L]
  3. Out[53]: ['tom', 'peter', 10, 'jerry']

注:三元表达式一般使用都是完整使用,如果没有else,if就必须放在结尾处,至于为什么,我没想明白...

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注