gpt4 book ai didi

python - 比较两个列表并只打印差异? (异或两个列表)

转载 作者:太空狗 更新时间:2023-10-29 18:13:38 25 4
gpt4 key购买 nike

我正在尝试创建一个接受 2 个列表并返回仅具有两个列表差异的列表的函数。

示例:

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 或任何东西,基本上只是循环。

最佳答案

如果一个元素存在于一个列表中而另一个列表中不存在,您基本上想将它添加到您的新列表中。这是一个可以做到这一点的紧凑循环。对于两个列表中的每个元素(将它们与 list1+list2 连接),如果元素不存在于其中一个列表中,我们将添加该元素:

[a for a in list1+list2 if (a not in list1) or (a not in list2)]

您可以像现在一样轻松地将它转换为更非 Pythonic 的代码,并通过元素进行显式循环,但老实说,我看不出有什么意义(这并不重要):

def xor(list1, list2):
outputlist = []
list3 = list1 + list2
for i in range(0, len(list3)):
if ((list3[i] not in list1) or (list3[i] not in list2)) and (list3[i] not in outputlist):
outputlist[len(outputlist):] = [list3[i]]
return outputlist

关于python - 比较两个列表并只打印差异? (异或两个列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16312730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com