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