使用 bool() 简化 'if' 语句

Simplifying an 'if' statement with bool()

我有一些代码导致 Pylint 抱怨:

The if statement can be replaced with 'var = bool(test)' (simplifiable-if-statement)`

代码(带有混淆的变量名)如下。

A = True
B = 1
C = [1]
D = False
E = False

if A and B in C:
    D = True
else:
    E = True

print(D, E)

如何简化这使得 Pylint 不抛出任何错误?

我不太明白 bool() 如何用于此。我知道它将任何值转换为布尔值,但我不知道如何在此处应用它。

试试这个:

D = bool(A and B in C)
E = not bool(A and B in C)

该逻辑可以表示为:

D = A and B in C
E = not D

最初我对接受的答案有点困惑,然后意识到我的问题不在于接受的答案本身(这确实是完全正确的),而是问题的特殊性。我需要一个更通用/更简单的用例,所以我会尝试提供一个,希望它能对某人有所帮助。

simplifiable-if-statement Pylint 重构基本上发生在我们使用 if-else 语句为布尔变量赋值时,否则该变量可能被赋值直接,根本不使用 if-else 语句。

一个通用的例子可以是:

if <condition>:
  variable = True
else:
  variable = False

可以(也应该)简化为:

variable = <condition>

其中 <condition> 是一个布尔表达式。

一个具体的例子:

if a > 5:
  b = True
else:
  b = False

应该改写为

b = a > 5

回到最初的问题,在这种情况下,条件是 A and B in C 并且正如其他贡献者所指出的那样,冗余片段:

D = False
E = False
if A and B in C:
    D = True
else:
    E = True

应该简化为

D = A and B in C
E = not D