1. 条件表达式
- 一般语法表达式的语法格式形式如下:
expr1 if condition else expr2
- 这种复合表达式,如果条件为真,则计算expr1;否则,计算expr2
实例:将变量n的绝对值传递给一个函数
- 传统控制结构,实现如下:
if n > 0:
param = n
else:
param = -n
result =
- 条件表达式,实现如下:
param = n if n >= 0 else -n
result = foo(n if n >= 0 esle -n)
2. 解析语法
- 一般形式如下:
[expression for value in interable if condition]
- expression 和 condition 都取决于 value,而if字句是可选的
- 等价的传统控制结构:
result = []
for value in iterable:
if condition:
result.append(expression)
实例:求数字1~n的平方和列表
- 传统方式,实现如下:
squares = []
for i in range(1, n + 1):
squares.append(k * k)
- 列表解析式,实现如下:
squares = [k * k for k in range(1, n + 1)
实例:求整数n的因子列表
factors = [k for k in range(1, n + 1) if n % k == 0]
- 生成集、生成器或字典的解析语法
实例:计算数字的平方
[k * k for k in range(1, n + 1)] # 列表解析
{k * k for k in range(1, n + 1)} # 集合解析
(k * k for k in range(1, n + 1) # 生成器解析
{k : k * k for k in range(1, n + 1)} # 字典解析
实例:计算前n个数的平方和
- 生成器语法:
total = sum(k * k for k in range(1, n + 1))