Ant*_*Via 5 python list matching
我有两个排序的正整数列表,它们可以有重复的元素,我必须从每个列表中删除匹配的数字对:
a=[1,2,2,2,3]
b=[2,3,4,5,5]
Run Code Online (Sandbox Code Playgroud)
应该变成:
a=[1,2,2]
b=[4,5,5]
Run Code Online (Sandbox Code Playgroud)
也就是说,2 和 3 已被删除,因为它们出现在两个列表中。
由于元素重复,这里不能使用集合交集。
我该怎么做?
小智 4
要删除两个列表中出现的元素,请使用以下命令:
for i in a[:]:
if i in b:
a.remove(i)
b.remove(i)
Run Code Online (Sandbox Code Playgroud)
要创建一个为您执行此操作的函数,只需执行以下操作:
def removeCommonElements(a, b):
for e in a[:]:
if e in b:
a.remove(e)
b.remove(e)
Run Code Online (Sandbox Code Playgroud)
或者返回新列表而不编辑旧列表:
def getWithoutCommonElements(a, b): # Name subject to change
a2 = a.copy()
b2 = b.copy()
for e in a:
if e not in b:
a2.remove(e)
b2.remove(e)
return a2, b2
Run Code Online (Sandbox Code Playgroud)
但是前者可以替换为removeCommonElements
如下所示:
a2, b2 = a.copy(), b.copy()
removeCommonElements(a2, b2)
Run Code Online (Sandbox Code Playgroud)
这将保留 a 和 b,但创建没有公共元素的重复项。
归档时间: |
|
查看次数: |
7749 次 |
最近记录: |