770686119 发表于 2019-5-13 16:48:12

列表元素去重2种方法

方法一:用列表
def distincValue(source,objList):
    for each in source:
      if each not in objList:
            objList.append(each)
    return(objList)
print(distincValue(,[]))



方法二:用集合
list1 =
list2 = list(set(list1))
print(list2)

折折叠叠像弹簧 发表于 2020-3-19 14:04:11

用方法2去重后,能不能使输出值按照原数据的顺序,要求不用循环体
输入:2,2,5,6,7,8,3,2,9
输出:

TJBEST 发表于 2020-3-19 14:12:27

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

如果保持顺序,用集合不行。但是集合去重速度快。

折折叠叠像弹簧 发表于 2020-3-19 14:21:26

TJBEST 发表于 2020-3-19 14:12
如果保持顺序,用集合不行。但是集合去重速度快。

这是我们课后的一道思考题,提示是通过index方法和sorted函数的key值

wcshds 发表于 2020-3-19 14:34:17

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

你不是都知道了吗。。。
sorted(set(list1), key = list1.index)

折折叠叠像弹簧 发表于 2020-3-19 15:07:02

wcshds 发表于 2020-3-19 14:34
你不是都知道了吗。。。

谢谢!!!我一直想不明白list1.index()括号里要填什么,为什么可以不用括号?

TJBEST 发表于 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) x表示arr的一个元素,即arr按照每个元素的下标为0的值对arr元素进行排序
arr = [,[-1,-1],] 排序结果:[[-1,-1],,]

你的要求应该这个程序 应该真么写更好理解
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)返回值一致,效果一样

折折叠叠像弹簧 发表于 2020-3-19 15:54:42

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

非常感谢!!
页: [1]
查看完整版本: 列表元素去重2种方法