python条件表达式和解析语法
条件表达式
条件表达式可以取代一个简单的控制结构 一般语法表达式的语法形式: expr1 if condition else expr2 条件为真,执行expr1;条件为假,执行expr2 相当于java或c++中的语法”condition ? expr1 : expr2“
实例–将变量n的绝对值传递给一个函数
使用传统的控制结构
if n
>= 0:
param
= n
else:
param
= -n
result
= foo
(param
)
条件表达式的语法中
param
= n
if n
>= 0 else -n
result
= foo
(param
)
result
= foo
(n
if n
>= 0 else -n
)
缩短源代码避免了更繁琐的控制结构
解析语法
列表解析语法
一般形式 [expression for value in iterable if condition] experssion 和 condion 都取决于value,而if子句是可选的 等价于:
result
= []
for value
in iterable
:
if condition
:
result
.append
(experssion
)
具体的列子–1~n的平方列表是[1,4,9,16,25,···]
传统的方式实现
squras
= []
for k
in range(1, n
+1):
squras
.append
(k
*k
)
使用列表解析
squras
= [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)} 字典解析
二维数组
a
= [[i
for i
in range(4)] for y
in range(4)]
"""执行结果
[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]
b = [[i for i in (1,2,3)]for y in range(10)]
"""
"""执行结果
[[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]]
"""