('foo', 'bar')[sum(arr)%2]的含义是什么?

4

我是 Python 的新手,我发现了下面这个解决 CodeWars 问题的方法:

def odd_or_even(arr):
    return ('even', 'odd')[sum(arr) % 2]

我用列表推导式解决了我的问题,但这是一种对我有限的理解而言陌生的Pythonic概念,你能解释一下 (..)[...] 的组合互动吗?

1
将其拆分成更小的部分。sum(arr) 是什么意思? sum(arr) % 2 是什么意思?当您索引元组项时,会得到什么? - Pranav Hosangadi
1个回答

6

这只是对元组进行索引。

t = ('even', 'odd')
print(t[0])  # 'even'

他们使用模运算的结果作为索引来访问元组中的元素,因为% 2的结果总是0或1。

我不会这样用。我认为他们试图通过这种方式显得高级。


我确定提示是根据给定的arr中元素的总和返回“even”或“odd”。你为什么认为他们想要看起来花哨? - Pranav Hosangadi
哈!我明白了,知道这不是好的实践方法,当我看到这个时,我以为这可能是一种Pythonic的做事方式,但我无法理解,谢谢。 - Ricardo Sanchez
4
这可能只是个人观点,但我认为使用“if sum(arr) % 2 == 0”来表示条件表达式会更清晰。这似乎是为了简洁而不是清晰明了。 - Carcigenicate
我仍然在努力理解 (...)[...] 这种组合是如何工作的。 - Ricardo Sanchez
1
在元组中使用模数结果作为索引。第二次阅读后我明白了。 - Ricardo Sanchez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接