某些元素的

时间:2017-01-30 22:36:42

标签: python list comparison

如何检查列表是否包含在另一个列表中,而只是其中的一部分? 我的意思是:

list_a = [1,2,3,4,5,6]

list_b = [4,2,5,4,7,7]

我只想检查list_b是否类似[*,2,*,4,*,*,*]。 (*表示任何字符/数字)

编辑1:更具体地说,我想检查列表[*,2,*,4,*,*,*]是否包含在任何其他列表中。

例如,它将包含在[1,4,5, 2 ,7, 4 ,8]

编辑2:2处于第二位置而第四位是4处是巧合。我试图实现的是检查列表模式是否包含在另一个列表中。在模式列表中,不包括所有元素。例如,检查pattern_list = [foo,foo,8,foo,foo,foo,7]是否包含在另一个列表中= [foo,foo,foo,foo,foo,8,foo,foo,foo,7,foo ,foo]

3 个答案:

答案 0 :(得分:1)

这是你的想法吗?

>>> list_a = [1, 2, 3, 4, 5, 6]
>>> list_b = [4, 2, 5, 4, 7, 7]
>>> [x for x,y in zip(list_a, list_b) if x == y]
[2, 4]

答案 1 :(得分:1)

def allUnique(L):
    for i in L:
        if i != L[0]: return False
    return True

In [21]: list_a = [1, 2, 3, 4, 5, 6]

In [22]: list_b = [4, 2, 5, 4, 7, 7]

In [23]: answer = [t[0] if allUnique(t) else "*" for t in zip(list_a, list_b)]

In [24]: answer
Out[24]: ['*', 2, '*', 4, '*', '*']

答案 2 :(得分:0)

您可以使用以下内容:

>>>a = [1, 2, 3, 4]

>>>b = [3, 67, 1]

>>>list(set(a).intersection(set(b)))

>>>[1, 3]