Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 为什么我的列表包含否定不起作用?_Python 3.x - Fatal编程技术网

Python 3.x 为什么我的列表包含否定不起作用?

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']

作为我正在编写的(python3.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中的成员;相反,它什么也不打印。为什么会这样?我尝试过各种用括号之类的语法技巧,但这很难解决。

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!这就是我一次做太多事情的结果。我断断续续地看了大概一个小时,我从来没有想到我是在倒退。谢谢