python - 在python中获取没有if或for块的列表元素
问题描述
几天前,在我的考试中,我有一个问题: 4. 重写以下代码,不使用 if 语句。代码应该是单行的。(不使用任何其他循环)
If not flora and fauna:
return True
else:
return False
我无法回答这个问题,但对我来说仍然很有趣/很奇怪,因为我不是 python 专业人士。我已经尝试了很多方法,比如extend()
函数,但仍然不知道如何做到这一点。
有什么想法或提示吗?
编辑:我错误地提出了这个问题。非常遗憾。由于我没有太多经验,我认为这个问题只能通过制作列表来解决。
解决方案
由于您在 true 和 false 时返回True
,if
因此False
直接的解决方案是直接返回if
正在评估的内容:
return not flora and fauna
请注意,这可能不会返回True
or 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
这确实是要走的路。
推荐阅读
- java - 复制资源文件夹中的文件
- powershell - PowerShell Get-PnPFile 找不到路径的一部分 - 动态文件夹名称
- docker - 尝试连接 docker URL 时连接被拒绝
- json - Illuminate\Queue\InvalidPayloadException:无法对有效负载进行 JSON 编码。错误代码:5
- node.js - 是否可以像在 php 上一样在 node.js 上反序列化?
- git - 从现有项目创建 repo
- css - 如何使用 blazor webassembly css 隔离功能?
- c++ - 不同数量的输入数据
- ninject - 在请求范围内,在 Ninject InterceptAttribute 和 ApiController 之间共享相同的实例
- python - cnn+lstm 模型的预测在尝试其他视频时总是显示相同的结果