在python中获取不带if或for块的列表元素

2024-05-28 19:20:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

有什么想法或提示吗

编辑:我把问题框错了。对不起。由于我没有太多的经验,我认为这个问题只能通过列出清单来解决


Tags: and方法代码falsetruereturnifnot
1条回答
网友
1楼 · 发布于 2024-05-28 19:20:54

由于当if为真时返回True,当False为假时返回True,因此简单的解决方案是直接返回if正在计算的内容:

return not flora and fauna

请注意,这可能不会返回TrueFalse,而是一个truthy或falsy值(例如,对于falsyflora,表达式的计算结果为fauna是什么;如果flora, fauna = 0, "Spam",表达式的计算结果为"Spam",这是truthy,但不是True),并且fauna是{}。如果您需要一个真正的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/False,所以return not flora and fauna才是真正的选择

相关问题 更多 >

    热门问题