我可以解压变量以检查它们在另一个列表中的成员身份吗?

Can I unpack variables in order to check their membership in another list?

我想知道我是否有一个整数列表,然后我可以解压它们以检查它们是否存在于另一个列表中,还是我必须手动执行?我知道有像 any() 和 all() 这样的内置函数,但我想知道我们是否可以在成员资格测试期间解压变量。

list1 = [1,2,3,4,5,6,7,8,9,0]
list2 = [5,3,2,]
if (*list1) in list2:
    print("it works")

即使列表中有重复项,您也可以使用 set:

if set(list2).issubset(list1):
    print("it works")

因为它只会检查 list2 中的所有项目是否存在于 list1 中,所以如果第一个实例存在,则重复项将始终存在。

关于您更新的问题,不,您不能在 python 中使用此语法。 Packing/unpacking 在函数参数中

您可以使用理解列表

If len([x1 if x1 in l2 for x1 in l1])!=0:
  Print('not a great solution with big lists')

需要集合数据类型参数的函数接受集合的解包。您可以通过将解压缩的参数与另一个集合中的项目进行比较来检查此函数中的成员资格。下面是一个自定义函数,它接受 list1 的解包并将此列表中的项目与另一个列表 list2 进行比较。

list1 = [1,2,3,4,5,6,7,8,9,0]
list2 = [5,3,2]

def intersection(*args, list2):
    for i in args:
        if i in list2:
            print(i)

intersection(*list1, list2=list2)
#Output:
2
3
5

您还可以使用 intersection 等内置 set 操作来获得类似的结果:

set(list1).intersection(list2)
#Ouptut:
{2, 3, 5}