首页 > 解决方案 > 在python中获取没有if或for块的列表元素

问题描述

几天前,在我的考试中,我有一个问题: 4. 重写以下代码,不使用 if 语句。代码应该是单行的。(不使用任何其他循环)

If not flora and fauna:
      return True
else:
      return False

我无法回答这个问题,但对我来说仍然很有趣/很奇怪,因为我不是 python 专业人士。我已经尝试了很多方法,比如extend()函数,但仍然不知道如何做到这一点。

有什么想法或提示吗?

编辑:我错误地提出了这个问题。非常遗憾。由于我没有太多经验,我认为这个问题只能通过制作列表来解决。

标签: python

解决方案


由于您在 true 和 false 时返回Trueif因此False直接的解决方案是直接返回if正在评估的内容:

return not flora and fauna

请注意,这可能不会返回Trueor False,而是返回一个真值或假值(例如,对于假值flora,表达式的计算结果是什么fauna;如果flora, fauna = 0, "Spam",表达式的计算结果是"Spam",它是真值,但不是True),并且fauna"Spam"。如果您需要真正的True/ False,只需转换为bool

return bool(not flora and fauna)

或者使用条件表达式来达到同样的效果:

return True if not flora and fauna else False

或者(我们现在正在进入“为了有趣的领域而玩耍):

return not not (not flora and fauna)

或(分发一个not):

return not (flora or not fauna)

或(比 快bool,比 慢not not,但可能不值得导入):

from operator import truth

return truth(not flora and fauna)

但是,99+% 的时间,你不需要 true True/ False,所以return not flora and fauna这确实是要走的路。


推荐阅读