描述

在一个无序的整数序列中,存在多个重复的数据(出现次数超过1次),用列表的形式将这些重复的数据从小到大输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输入:若干个整数,以空格间隔‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输出:从小到大排列,列表形式输出。如果没有找到重复的数,则输出空列表[]

输入:若干个整数,以空格间隔

  1. ls = input().split() # 输入转列表,元素为字符串

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
用 set(ls) 去掉列表 ls 中重复的数据,得到集合。再遍历集合,将集合中存在的数据从列表中删除。注意,remove(i) 只删除第一个与i 相同的数据,有多次重复的仍然保留在列表中。遍历结束后可以再用 set(ls) 转集合去掉重复的元素。

  1. data = set(ls) # 去掉重复数据,集合
  2. for i in data: # 遍历集合
  3. ls.remove(i) # 将集合中存在的数据从列表中删除
  4. print(sorted(map(int,set(ls)))) # 列表剩余元素就是重复的数据,再次转集合去重,转整型,再排序,结果为列表

完整代码如下:

  1. def duplicate(ls):
  2. data=set(ls) # 去掉重复数据,集合
  3. for i in data: # 遍历集合
  4. ls.remove(i) # 将集合中存在的数据从列表中删除
  5. return sorted(map(int,set(ls))) # 列表剩余元素就是重复的数据,再次转集合去重,转整型,再排序,结果为列表
  6. if __name__ == '__main__':
  7. ls = input().split() # 输入数据转列表,元素为字符串
  8. print(duplicate(ls)) # 调用函数

当数据量较大时,列表的效率是较低的,所以在数据量很大时,要尽量减少使用列表。这个题目也可以先建立 两个空集合,然后遍历列表,将重复出现的数据放在一个集合中,再排序输出。

  1. def duplicate(ls):
  2. duplication = set() # 存放重复元素的集合
  3. data=set() # 存放只出现一次的集合
  4. for i in ls: # 遍历列表
  5. if i in data: # 如果元素在只出现一次的集合中已经存在,说明是重复数据
  6. duplication.add(i) # 加入到重复数据的集合中,多次重复的只保留一次
  7. else:
  8. data.add(i)
  9. return sorted(map(int,duplication)) # 集合元素转整型,再排序,结果为列表
  10. if __name__ == '__main__':
  11. ls = input().split() # 输入数据转列表,元素为字符串
  12. print(duplicate(ls)) # 调用函数