('foo','bar')[sum(arr)%2]是什么意思?
我是 Python 新手,我遇到了 CodeWars 问题的这个解决方案(如下)
def odd_or_even(arr):
return ('even', 'odd')[sum(arr) % 2]
我使用列表推导式解决了我的问题,但这是与我有限的理解不同的 Pythonic 概念之一,(..)[...]
你能解释一下这些组合如何相互作用?
回答
这只是索引一个元组。
t = ('even', 'odd')
print(t[0]) # 'even'
他们使用模数的结果索引到 tuple 中,因为% 2
结果总是 0 或 1。
不过我不会用这个。我认为他们试图通过这样写来看起来很花哨。
- @PranavHosangadi This may just be personal opinion, but I think a conditional expression using `if sum(arr) % 2 == 0` would be a clearer way of expressing this. This seems like they're going for brevity instead of clarity.