如果一个列表中的元素被删除,则python检查一个列表是否可以等于另一个列表(在值和顺序中)

时间:2014-07-08 19:55:19

标签: arrays list python-2.7

我有两个输入列表(调用一个a,另一个b),我试图看一个是否可以匹配b,如果a的元素被删除。例如,如果a = [1,1,2,3,3,4,4]和b = [1,2,3],函数会发现它可以删除一次出现1次,两次出现3次并且只出现4使a == b。我不知道如何在Python中使用它。

2 个答案:

答案 0 :(得分:1)

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

i = 0
ans = False
if len(a) >= len(b):
    for item in a:
        if item == b[i]:
            i += 1
            if i >= len(b):
                ans = True
                break

print ans

答案 1 :(得分:0)

不如sophiadw的答案有效,但这种方法会告诉你a中哪些项不需要匹配b,输入列表不需要排序。< / p>

from collections import Counter

#returns False if a can't be pared down to match b.
#If it can be pared down, returns a dictionary of which items to remove.
def can_match(a,b):
    c_a = Counter(a)
    c_b = Counter(b)    
    if c_b - c_a:
        return False
    return c_a - c_b

a = [1,1,2,3,3,3,4]
b = [1,2,3]
print can_match(a,b)

结果:

Counter({3: 2, 1: 1, 4: 1})