三元表达式与生成式
# 三元表达式
三元表达式是if-else语法的简化版,用于表达一些简单的逻辑。
[条件成立的返回] if [条件] else [条件不成立的返回]
条件成立插入if前面的值,否则插入else后面的值。
返回结果也可以是函数,会调用函数然后将函数的返回值作为结果。
ret = "Yes" if 1 + 1 == 2 else "No"
# 同等于
if 1 + 1 == 2:
ret = "Yes"
else:
ret = "No"
1
2
3
4
5
6
2
3
4
5
6
# 生成式
生成式也用于简化代码,用于根据简单条件对迭代元素进行判断,以生成想要的对象。
# 列表生成式
list = [返回结果 for item in 可迭代对象 if 条件]
每for循环一次,条件判断一次,如果条件成立,则插入for前面的值到列表中。如果不使用if则表示任何值都成立,都插入到列表中。
返回结果可以是函数,会调用函数然后将函数的返回值作为元素插入到列表。
虽然可以嵌套,但不建议,因为可读性差。
list = [1,2,3]
test = [ i for i in list if i == 1 ]
print(test)
> 输出 [1]
1
2
3
4
2
3
4
使用方括号,表示生成的是列表。
# 字典生成式
keys = [('t',123),('a',321)]
dict = {k:v for k,v in keys if k != 'a'}
print(dict)
> 输出 {'t': 123}
1
2
3
4
2
3
4
使用花括号,生成的元素是键值对,表示生成的是字典。
# 集合生成式
keys = [123,321]
set = {k for k in keys}
print(set)
1
2
3
2
3
使用花括号,但是生成的元素不是键值对,表示生成的是集合。
# 生成器表达式
g = (i for i in range(1,10) if i > 3)
使用圆括号,表示生成的是迭代对象,而非值。