我正在尝试创建一个函数,它接受两个列表比较它们并返回一个列表,显示第一个列表与另一个列表的不同之处。以下是一些示例:
示例1:
list1: [1, 2, 3]
list2: [1, 3]
desired result: [0, 1, 0]
示例2
list1: [1, 3, 1, 2, 4]
list2: [1, 1, 4]
desired result: [0, 1, 0, 1, 0]
示例3
list1: [3, 5, 2, 9, 9]
list2: [3, 5, 9, 9]
desired result: [0, 0, 1, 0, 0]
示例4
list1: [1, 1, 1]
list2: [1]
desired result: [0, 1, 1]
示例5
list1: [1, 2, 2, 1]
list2: [1, 2, 1]
desired result: [0, 0, 1, 0]
一些事实:
list1
的长度始终大于或等于list2
desired list
的长度为list1
我道歉,我没有提供任何答案,但我想不出任何方法来实现这一点。任何指导/提示?
答案 0 :(得分:1)
这是我的尝试:
def compute_difference(list1, list2):
result = []
iter1 = iter(list1)
for item2 in list2:
for item1 in iter1:
if item2 == item1:
result.append(0)
break
else:
result.append(1)
for item1 in iter1:
result.append(1)
return result
assert compute_difference([1,2,3],[1,3]) == [0, 1, 0]
assert compute_difference([1, 3, 1, 2, 4], [1, 1, 4]) == [0, 1, 0, 1, 0]
assert compute_difference([3, 5, 2, 9, 9], [3, 5, 9, 9]) == [0, 0, 1, 0, 0]
答案 1 :(得分:1)
我认为这适合你:
desired = []
list1= [1, 3, 1, 2, 4]
list2= [1, 1, 4]
j = 0;
for i in range(len(list2)):
while(list1[j] != list2[i]):
desired.append(1)
j+=1
desired.append(0)
j += 1
print (desired)
答案 2 :(得分:0)
不像其他人那样优雅,但这会起作用。基本上你只需检查列表之间的成员资格。如果它在那里然后追加0,否则将1添加到新列表。
list1 = [3, 5, 2, 9, 9]
list2 = [3, 5, 9, 9]
# desired result: [0, 0, 1, 0, 0]
result = []
for i in range(0, len(list1)):
# print(list1[i])
if list1[i] in list2:
result.append(0)
else:
result.append(1)
print(result)
我希望这会有所帮助。