我可以解压缩变量以检查其他列表中的成员资格吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以解压缩变量以检查其他列表中的成员资格吗?相关的知识,希望对你有一定的参考价值。
我想知道如果我有一个整数列表,那么我可以解压缩它们以检查它们是否存在于另一个列表中或者我必须手动执行吗?我知道有内置函数,如any()和all(),但我想知道我们是否可以在成员资格测试期间解压缩变量。
list1 = [1,2,3,4,5,6,7,8,9,0]
list2 = [5,3,2,]
if (*list1) in list2:
print("it works")
答案
需要来自集合数据类型的参数的函数接受对集合的解包。您可以通过将解压缩的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}
另一答案
即使你在列表中有重复项,你也可以使用set
:
if set(list2).issubset(list1):
print("it works")
因为它只是检查来自list2
的所有项目是否都存在于list1
中,所以如果它们的第一个实例存在,则重复项将始终存在。
关于您更新的问题,不能在python中使用此语法。在函数参数中打包/解包
另一答案
您可以使用理解列表
If len([x1 if x1 in l2 for x1 in l1])!=0:
Print('not a great solution with big lists')
以上是关于我可以解压缩变量以检查其他列表中的成员资格吗?的主要内容,如果未能解决你的问题,请参考以下文章