鱼C论坛

 找回密码
 立即注册
查看: 2379|回复: 7

[技术交流] 列表元素去重2种方法

[复制链接]
发表于 2019-5-13 16:48:12 | 显示全部楼层 |阅读模式

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

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

x
方法一:用列表
def distincValue(source,objList):
    for each in source:
        if each not in objList:
            objList.append(each)
    return(objList)
print(distincValue([1,2,3,4,5,6,2,3,4,5],[]))


方法二:用集合
list1 = [1,2,3,4,5,6,2,3,4,5]
list2 = list(set(list1))
print(list2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-19 14:04:11 | 显示全部楼层
用方法2去重后,能不能使输出值按照原数据的顺序,要求不用循环体
输入:2,2,5,6,7,8,3,2,9
输出:[2,5,6,7,8,3,9]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 14:12:27 | 显示全部楼层
折折叠叠像弹簧 发表于 2020-3-19 14:04
用方法2去重后,能不能使输出值按照原数据的顺序,要求不用循环体
输入:2,2,5,6,7,8,3,2,9
输出:[2,5,6 ...

如果保持顺序,用集合不行。但是集合去重速度快。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 14:21:26 | 显示全部楼层
TJBEST 发表于 2020-3-19 14:12
如果保持顺序,用集合不行。但是集合去重速度快。

这是我们课后的一道思考题,提示是通过index方法和sorted函数的key值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 14:34:17 | 显示全部楼层
折折叠叠像弹簧 发表于 2020-3-19 14:21
这是我们课后的一道思考题,提示是通过index方法和sorted函数的key值


你不是都知道了吗。。。
sorted(set(list1), key = list1.index)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 15:07:02 | 显示全部楼层
wcshds 发表于 2020-3-19 14:34
你不是都知道了吗。。。

谢谢!!!我一直想不明白list1.index()括号里要填什么,为什么可以不用括号?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 15:26:38 | 显示全部楼层
本帖最后由 TJBEST 于 2020-3-19 15:38 编辑
折折叠叠像弹簧 发表于 2020-3-19 15:07
谢谢!!!我一直想不明白list1.index()括号里要填什么,为什么可以不用括号?


list.index(obj)——找出第一个匹配到参数obj(值)的索引,返回值:返回索引值。
key传进的必须是函数
比如sorted(arr,key = lambda x:x[0]) x表示arr的一个元素,即arr按照每个元素的下标为0的值对arr元素进行排序
arr = [[1,2],[-1,-1],[0,22]] 排序结果:[[-1,-1],[0,22],[1,2]]

你的要求应该这个程序 应该真么写更好理解
sorted(set(list1), key = lambda x:list.index(x))
即按照原列表第一次出现的顺序进行排序
sorted(set(list1), key = list1.index)
与我写的程序是等价的
因为 假设
func =  lambda x:list.index(x)
则func(x)与list1.index(x)返回值一致,效果一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-19 15:54:42 | 显示全部楼层
TJBEST 发表于 2020-3-19 15:26
list.index(obj)——找出第一个匹配到参数obj(值)的索引,返回值:返回索引值。
key传进的必须是函 ...

非常感谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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