【问题描述】 已知两个列表,可能包含有相同元素,请找出两个列表的相同元素,并放入新的列表。打印新列表。输出结果中没有重复元素,如果两个列表中没有相同元素则输出[]。 【输入形式】 第一行输入第一个列表,包括方括号,元素之间用逗号分隔 第二行输入第二个列表。 【输出形式】 如果存在相同元素,非降序输出列表元素 如果不存在相同元素则输出[] 【样例输入1】 [1,2,3,4,5] [2,3,4,5,6] 【样例输出1】 [2, 3, 4, 5] 【样例输入2】 [1,2,3,4,5] [7,8,9,10,11] 【样例输出1】 [] 【样例说明】 无 【评分标准】 通过所有测试数据 nums1 = eval(input()) # 输入列表 nums2 = eval(input()) nums1.sort() # 排序 nums2.sort() arr = [] i = j = 0 while i < len(nums1) and j < len(nums2): # 相互比较开始 if nums1[i] < nums2[j]: i += 1 elif nums1[i] > nums2[j]: j += 1 else: i += 1 j += 1 for x in arr: while arr.count(x) > 1: print(arr) # 输出
时间: 2024-01-23 12:04:27 浏览: 68
获取两个数组相同的元素或不同的元素输出
你的代码已经很接近正确答案了,但是还有一些问题。
首先,你需要在代码中添加一个变量 `k` 来表示新列表 `arr` 的下标,初始值为 0。每次找到相同的元素时,将其添加到 `arr` 中,并将 `k` 的值加 1。
其次,你需要对输出的列表进行去重。可以在输出前先将 `arr` 转化为一个集合 `set(arr)`,然后再转化回列表 `list(set(arr))`。这样就可以去除列表中的重复元素。
最后,你在代码中添加了一个无限循环,导致程序一直在输出结果。需要把循环去掉,只输出一次最终结果即可。
下面是修改后的代码:
```
nums1 = eval(input()) # 输入列表1
nums2 = eval(input()) # 输入列表2
nums1.sort() # 对列表1进行排序
nums2.sort() # 对列表2进行排序
arr = []
k = 0 # 新列表的下标
i = j = 0
while i < len(nums1) and j < len(nums2):
if nums1[i] < nums2[j]:
i += 1
elif nums1[i] > nums2[j]:
j += 1
else:
arr.append(nums1[i])
i += 1
j += 1
k += 1
if k == 0:
print('[]')
else:
arr = list(set(arr)) # 去重
print(arr)
```
运行代码,输入样例即可得到正确输出。
阅读全文