表达式可以在布尔文字上简化[重复]

Posted

技术标签:

【中文标题】表达式可以在布尔文字上简化[重复]【英文标题】:expression can be simplified on boolean literal [duplicate] 【发布时间】:2017-02-06 08:53:06 【问题描述】:

我有以下代码重现 PyCharm 警告,

表达式可以简化

此表达式检测与布尔文字的相等比较。

seq_group = []
if seq_group == []: # warning here
   print("it is empty.")

如果我将代码更改为,

if seq_group is None:

将修复警告,但真正的问题是 None[]emplty 列出相同的东西?

干杯

【问题讨论】:

我同意@ŁukaszRogalski,我确信最佳答案可以解决警告。我有点犹豫要不要关闭,因为实际的问题是 None 是否与 [] 相同。 【参考方案1】:

None[] 空列表是同一个东西吗?

不,这会导致错误的行为:

seq_group = []

if seq_group is None:
    print("it is empty")

这不会打印任何东西,None[] 完全不同,价值和身份都是明智的。 None 表示没有值,[] 表示没有值的列表。混淆可能是因为两者都碰巧在条件句中评估 False

警告可能是因为您可以简单地将seq_groupnot 一起使用,而不是将文字与== 一起使用:

if not seq_group:
    print("it is empty")

【讨论】:

我还发现如果seq_group = None if not seq_group: print("it is none")it is none会被打印出来,这意味着not也适用于None的对象。

以上是关于表达式可以在布尔文字上简化[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用卡诺图简化布尔表达式

布尔代数表达式简化

简化布尔表达式的算法

如何简化任意布尔表达式?

布尔逻辑:如何简化此 IF 语句?

错误在条件表达式中不必要地使用布尔文字 no-unneeded-ternary