作为我正在编写的(Python 3.3)程序的一部分,我正在比较两个列表;我想找到第一个列表中没有出现的第二个列表的每个成员,以便我可以构建数据库命令。 “in”成员资格测试按照我的预期工作,但它的否定却没有。
例如:
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中的成员;它根本不打印任何东西。为什么是这样?我用括号等尝试了各种语法技巧,但这很顽固。
答案 0 :(得分:2)
l2
中的每个项都在l1
,因此if x not in 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