Python:检查元素是否不在两个列表中?

use*_*666 7 python if-statement list

我需要检查一个元素是否不在两个列表中.我目前有:

if ele not in lista:
    if ele not in listb:
        do stuff
Run Code Online (Sandbox Code Playgroud)

使用以下代码不起作用.有没有更有效的方法来完成上面的python?

if ele not in lista and listb:
    do stuff
Run Code Online (Sandbox Code Playgroud)

jam*_*lak 17

if ele not in lista and ele not in listb:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

要么

if ele not in lista + listb:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

但第二个选项将涉及列表连接,这可能会导致大型列表的内存问题,它也必须两次通过列表.要解决这个问题,您可以使用itertools:

from itertools import chain
if ele not in chain(lista, listb):
    # do stuff
Run Code Online (Sandbox Code Playgroud)

如果您要不断检查成员资格,您希望使用set具有O(1)(分期)查找而不是O(n)列表的查找.

例如.

items_set = set(chain(lista, listb))
if ele in items_set:  # this membership check will be a lot faster
    # do stuff
Run Code Online (Sandbox Code Playgroud)