我可以解压缩变量以检查其他列表中的成员资格吗?

问题描述 投票:1回答:3

我想知道如果我有一个整数列表,那么我可以解压缩它们以检查它们是否存在于另一个列表中或者我必须手动执行吗?我知道有内置函数,如any()和all(),但我想知道我们是否可以在成员资格测试期间解压缩变量。

list1 = [1,2,3,4,5,6,7,8,9,0]
list2 = [5,3,2,]
if (*list1) in list2:
    print("it works")
python variables membership iterable-unpacking
3个回答
2
投票

需要来自集合数据类型的参数的函数接受对集合的解包。您可以通过将解压缩的args与另一个集合中的项目进行比较来检查此函数的成员身份。下面是一个自定义函数,它接受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

您还可以使用内置的set操作(如intersection)来实现类似的结果:

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

1
投票

即使你在列表中有重复项,你也可以使用set

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

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

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


0
投票

您可以使用理解列表

If len([x1 if x1 in l2 for x1 in l1])!=0:
  Print('not a great solution with big lists')
© www.soinside.com 2019 - 2024. All rights reserved.