为什么下面的代码在 2 个条件"=="但给出空列表时有效,相同的代码"!="有 2 个条件?


d1 = [{"name": "a", "author": "b", "read": False},
{"name": "c", "author": "b", "read": False},
{"name": "b", "author": "b", "read": False}]
temp = []
for i in range(len(d1)):
if d1[i]['name'] != "a" and d1[i]['author'] != "b":
temp.append(d1[i])
print(temp) # RESULT []
d1 = [{"name": "a", "author": "b", "read": False},
{"name": "c", "author": "b", "read": False},
{"name": "b", "author": "b", "read": False}]
temp = []
for i in range(len(d1)):
if d1[i]['name'] == "a" and d1[i]['author'] == "b":
temp.append(d1[i])
print(temp) # RESULT [{'name': 'a', 'author': 'b', 'read': False}]

在本例中:if d1[i]['name'] != "和d1[i]['author'] != "b"我希望它只添加那些不匹配condition的列表

您编写代码的方式给出了预期的结果。您自然地按照编写的代码来解释代码。所以如果name不是"a"AND作者不是"b"然后做下一步。两个逻辑陈述都必须为真才能继续…然而,因为作者总是"b"条件将始终为false。

考虑以下布尔运算和条件的求值

你现在有什么

>>> (not False) and (not True)

Result False-代码块不运行

我想你在期待什么

>>> not ( False and True)

Result True

或者写在你的代码上下文中:

if not ( d1[i]['name'] == "a" and d1[i]['author'] == "b" ) :

相关内容

  • 没有找到相关文章

最新更新