list1 = [48, 33, 46, 46, 87, 11, 50, 99, 65, 87]
list2 = [48, 33, 46]
duplicates = [list1.pop(list1.index(i)) for i in list1 if i in list2]
因此,如果我尝试打印重复项,那么[48,46] 这是一个功课,问题是什么 期望代码做并解释如何更改代码以获得预期结果。
答案 0 :(得分:0)
的是:
list1 = [48, 33, 46, 46, 87, 11, 50, 99, 65, 87]
list2 = [48, 33, 46]
duplicates = [list1.pop(list1.index(i)) for i in list1[:] if i in list2]
是错误的,因为它会在迭代时从[48, 33, 46, 46]
中删除项目。所以你跳过一些元素。
制作输入列表的副本会以某种方式修复它:
set
现在我得到:list
。要删除结果中的重复项,只需转换为list(set([48, 33, 46, 46])) => [48, 33, 46]
并返回list1.pop(list1.index(i))
list1
请注意,您的duplicates = [i for i in list1 if i in list2]
实际上并非次优,但是因为删除项目时转移了索引,而您不关心更改list1
要计算重复项,请执行以下操作:
Receiver's
您获得相同的结果,并且不会更改receiveUpload
。