鱼C论坛

 找回密码
 立即注册
查看: 2590|回复: 4

[已解决]如何不破坏顺序去重

[复制链接]
发表于 2020-3-19 14:19:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入一组整数后,先去重,然后按照原始数据的顺序,要求不使用循环体,通过sorted()或.sort()里的key值实现
去重我是用set()函数,该怎么写sorted()函数的key值??提示是与index方法有关
举例子:
输入:2,2,5,6,7,8,3,2,9
输出:[2,5,6,7,8,3,9]
最佳答案
2020-3-19 16:47:11
  1. res = sorted(set(ls), key=ls.index)
复制代码

这行代码先用 set 将原列表去重,然后用 sorted 对去重后的数据进行排序
由于要保留原来的顺序,所以这里的排序依据 key 就应该是数据在原列表中的索引
sorted 函数的 key 参数必须传入一个函数对象,对应到这里就是 ls.index
排序过程就是对 set(ls) 的每一个元素都调用 ls.index,得到的结果作为排序的依据
按照这个依据进行排序,就可以保留原来的顺序
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-19 15:01:23 | 显示全部楼层
  1. ls = [2,2,5,6,7,8,3,2,9]
  2. res = sorted(set(ls), key=ls.index)
  3. print(res)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-19 15:25:55 | 显示全部楼层

请问key值的index方法为什么不用加括号,我一直在想.index()的括号里应该填什么,另外能麻烦你解读一下代码吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 16:47:11 | 显示全部楼层    本楼为最佳答案   
  1. res = sorted(set(ls), key=ls.index)
复制代码

这行代码先用 set 将原列表去重,然后用 sorted 对去重后的数据进行排序
由于要保留原来的顺序,所以这里的排序依据 key 就应该是数据在原列表中的索引
sorted 函数的 key 参数必须传入一个函数对象,对应到这里就是 ls.index
排序过程就是对 set(ls) 的每一个元素都调用 ls.index,得到的结果作为排序的依据
按照这个依据进行排序,就可以保留原来的顺序
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-19 16:58:20 | 显示全部楼层
在东边 发表于 2020-3-19 16:47
这行代码先用 set 将原列表去重,然后用 sorted 对去重后的数据进行排序
由于要保留原来的顺序,所以这 ...

谢谢你的耐心解答!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 23:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表