我尝试创建一个函数,该函数接受两个列表并返回仅包含这两个列表之间的差异的列表。
示例:
a = [1,2,5,7,9]
b = [1,2,4,8,9]
输出结果应为[4,5,7,8]
函数目前的代码:
def xor(list1, list2):
list3=list1+list2
for i in range(0, len(list3)):
x=list3[i]
y=i
while y>0 and x<list3[y-1]:
list3[y]=list3[y-1]
y=y-1
list3[y]=x
last=list3[-1]
for i in range(len(list3) -2, -1, -1):
if last==list3[i]:
del list3[i]
else:
last=list3[i]
return list3
print xor([1,2,5,7,8],[1,2,4,8,9])
第一个for循环对其进行排序,第二个for循环删除重复项。问题是结果为[1,2,4,5,7,8,9]而不是[4,5,7,8],所以它并没有完全删除重复项?我应该添加什么来完成这个任务。基本上只能使用循环,不能使用任何特殊模块、.sort、set或其他东西。
set(a) ^ set(b)
呢? - DSMsymmetric_difference
,但我更喜欢你原来的长版本。但是当我评论时,你同时把它改成了symmetric_difference
。 :^) - DSM