题目
【问题描述】
从标准输入中输入两组整数(每组不超过20个整数,每组整数中的元素不重复,并且整数大于等于0),编程求两组整数的交集,即在两组整数中都出现的整数,并按从小到大顺序排序输出。若交集为空,则什么都不输出。
【输入形式】
在两行上分别输入两组整数,以一个空格分隔各个整数,以-1作为输入结束。
【输出形式】
按从小到大顺序排序输出两组整数的交集(以一个空格分隔各个整数,最后一个整数后的空格可有可无)。
【样例输入】
5 105 0 4 32 8 7 9 60 -1
5 2 87 10 105 0 32 -1
【样例输出】
0 5 32 105
【样例说明】
第一组整数有9个,分别为5 105 0 4 32 8 7 9 60,第二组整数有7个,分别为5 2 87 10 105 0 32。在这两组整数中都出现的整数有四个,按从小到大顺序排序后输出的结果为0 5 32 105。
分析
求解这道题的核心思想就是,用一组数中的元素去遍历另一组数据的每个元素,发现相同元素时添加到新列表中.
代码
代码如下:
lines = []
line = []
for i in range(0, 1):
try:
lines.append(input())
line.append(input())
except:
break
# 转换为列表
a = line[0].split(" ")
b = lines[0].split(" ")
c = [] # 新建一个列表,便于存储两组数的交集
# print(a, b)
# 利用循环遍历列表
for i in a:
for j in b:
if i >= str(0):
if i == j:
c.append(i)
# 若每组整数有重复元素,则添加此条件
# b.remove(j)
# print(c)
# print(b)
# 去除列表中元素的引号
c = [int(x) for x in c]
# print(c)
c.sort()
print(' '.join(map(str, c)))
关于列表数值排序我遇到的小bug,请参考此篇博客.
------列表数值简单排序bug