Python 3.x 为什么我的列表包含否定不起作用?
作为我正在编写的(python3.3)程序的一部分,我比较了两个列表;我想找到第二个列表中没有出现在第一个列表中的每个成员,以便生成一个数据库命令。“in”成员资格测试正如我所期望的那样工作,但它的否定却没有 例如:Python 3.x 为什么我的列表包含否定不起作用?,python-3.x,Python 3.x,作为我正在编写的(python3.3)程序的一部分,我比较了两个列表;我想找到第二个列表中没有出现在第一个列表中的每个成员,以便生成一个数据库命令。“in”成员资格测试正如我所期望的那样工作,但它的否定却没有 例如: l1 = ['MNE11B', 'DLC05A', 'MKH08A', 'PERGDM', 'DLW12B', 'FSW08A', 'PNC12A', 'KHH04A', 'BWD12A', 'YDB12A'] l2 = ['MKH08A', 'FSW08A', 'BWD12A']
l1 = ['MNE11B', 'DLC05A', 'MKH08A', 'PERGDM', 'DLW12B', 'FSW08A', 'PNC12A', 'KHH04A', 'BWD12A', 'YDB12A']
l2 = ['MKH08A', 'FSW08A', 'BWD12A']
print("Present")
for x in l2:
if x in l1:
print(x)
print("Not present")
for x in l2:
if x not in l1:
print(x)
第一个“for”循环打印出l2中也存在于l1中的三个成员。我希望第二个循环打印出l2中不在l1中的成员;相反,它什么也不打印。为什么会这样?我尝试过各种用括号之类的语法技巧,但这很难解决。l2中的每个项目都在l1
中,因此如果x不在l1
中,则总是计算为False
>>> l1 = ['MNE11B', 'DLC05A', 'MKH08A', 'PERGDM', 'DLW12B', 'FSW08A', 'PNC12A', 'KHH04A', 'BWD12A', 'YDB12A']
>>> l2 = ['MKH08A', 'FSW08A', 'BWD12A']
>>> for x in l2:
if x not in l1:
print(x)
>>> l2.append('XYZ31T')
>>> for x in l2:
if x not in l1:
print(x)
XYZ31T
因为
all(l1中的x代表l2中的x)
。因为set(l2)-set(l1)
是空集。Doh!这就是我一次做太多事情的结果。我断断续续地看了大概一个小时,我从来没有想到我是在倒退。谢谢