我遇到了一些我从未见过的python代码语法。这是一个例子:
i = 0
for spam in range(10):
i += [1, 3][i > 5]
print(i)
结果是1,2,3,4,5,6,9,12,15,18的序列。因此,它增加1直到i > 5
,然后增加3。
以前,我会把这句话写成:
if i > 5:
i += 3
else:
i += 1
那么这一行是什么:i += [1, 3][i > 5]
?
语法很有趣,我想更多地了解它,但不知道在哪里看。
编辑:
谢谢Darkstarone。我从未想过使用表达式来返回列表索引。那很酷。这意味着您还可以执行以下操作:spam = ["Even", "Odd"][eggs % 2]
返回偶数或奇数字符串,或foo = ["A", "B", "C"][zot % 3]
在循环遍历zot值时循环选择三个选项。
可能不会养成使用此构造的习惯,因为其他表达式更容易理解。但是,我会把这个放在那个完美情况的技巧中。
答案 0 :(得分:3)
所以我认为这里发生的是列表([1,3]
)可以是:
[1,3][0] # 1
或
[1,3][1] # 3
它利用0 == False
和1 == True
这一事实。虽然有点不透明,但它相当整洁。我可能会这样写:
i = 0
for _ in range(10):
i += 3 if i > 5 else 1
print(i)
答案 1 :(得分:0)
三元运算符,如下所示:
i += 3 if i > 5 else 1