做Python123平台上的列表去重题,复述题目:
去除列表中的重复元素,考虑以下几种情况:

l = [1, 1, 2, 3]
l = [[1], [1], [2], [3]]
l = [3, 2, 1, 1]

原文链接:14025
总结一下网上的方法和我自己想的方法:

  1. 不考虑列表去重之后的元素顺序
 return list(set(l))

由于集合元素的唯一性,集合可以去重,但是集合的元素是无序的,转换成列表之后原来的列表的元素顺序会变化,在评判时不通过。并且第二项还会报错

TypeError: unhashable type: 'list'

考虑到列表类型元素unhashable的问题,可以先把每个元素转换成字符串,去重之后再去掉引号

    a = [str(element) for element in l]b = list(set(a))duplicatedList =  [eval(element) for element in b]return duplicatedList

考虑到元素顺序问题,可以这样写(参考链接:链接)

    duplicatedList.sort(key=l.index)return duplicatedList
列表的index函数的用法是
list.index(x[, start[, end]])
x --- 要查找的元素
start --- 查找开始的位置
end --- 查找结束的位置
sort方法的key参数的意义是主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

我的理解是,从去重之后的列表duplicatedList中取出一个元素,在l中找第一次出现的位置(索引),以这个索引为依据排序duplicatedList的元素。语法上等效于

duplicatedList.sort(key=lambda x:l.index(x))

这仅是我个人的理解,原作者没解释。如果我说的不对欢迎讨论。

  1. 使用字典的fromkeys方法,第二项报unhashable错误
    参考:链接
# fromkeys 以列表的元素作为字典的键,把所有的键都赋同样的值(如果不指定则默认赋值为None)
lst1 = []
dct = dict.fromkeys(l)
# 对字典的每一个键,字典的键是唯一的
for n in dct:lst1.append(n)
return lst1

或者

return list(dict.fromkeys(l))

以下三种方法对于元素unhashable的情况依然有效

枚举l的每个元素,如果没在新列表里出现,则加在新列表的末尾,否则(重复了)不追加

    new_lst = []for v in l:if v not in new_lst:new_lst.append(v)return v
  1. 使用enumerate函数枚举
    平台的官方答案之一
#更简洁的写法是return [value for index, value in enumerate(l) if value not in l[:index] ]
#其意义是枚举列表每个元素(设索引为index,值为value),
#如果value没有在l[0:index]中出现过(没重复)则value加入到新列表中,如果重复就不追加
#如果还是看不懂,看下面的拆解版r = []for idx, value in enumerate(l):if value not in l[:idx]:r.append(value)return r
  1. 基于索引遍历列表
   r = []for idx in range(len(l)):if l[idx] not in r:#或者if l[idx] not in l[:idx]:r.append(l[idx])
# 也可写作return [l[idx] for idx in range(len(l)) if l[idx] not in l[:idx]]

python列表去重的一些方法相关推荐

  1. Python列表去重的六种方法

    方法一: 使用内置set方法来去重 >>> lst1 = [2, 1, 3, 4, 1] >>> lst2 = list(set(lst1)) >>&g ...

  2. python 列表去重(数组)的几种方法_python 列表去重(数组)的几种方法

    在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重.这里总结了下网上搜集到的几种方法. 一.方法1 代码如下 复制代码 ids = [1,2,3,3,4,2,3 ...

  3. python去重语句_Python对列表去重的多种方法(四种方法)

    无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后 ...

  4. Python列表去重的几种方法和实例

    Python列表去重的几种方法和实例 在 Python 中,列表去重有多种方法,下面分别介绍这些方法的实现. 方法一:使用 set() 函数 set() 函数可以将列表转换成集合,集合中不允许有重复的 ...

  5. 【python】python列表去重的5种常见方法实例

    Python编程过程中经常会遇到列表去重的问题,下面这篇文章主要给大家介绍了python列表去重的5种常见方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下 前言 列表去重在python实际运 ...

  6. python 多重列表去重_Python对列表去重的多种方法(四种方法)

    Python对列表去重的多种方法(四种方法) 无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重, ...

  7. python列表去重的两种方法

    python列表去重的两种方法 1. 使用循环进行遍历,将重复的元素去掉. def test1():lst = [1,2,5,6,3,5,7,3]tmp = []for it in lst:if it ...

  8. python列表去重去空_Python 列表去重去除空字符的例子

    如下所示: # x = ['c b a',"e d f"] # y = [] # for i in x: # for ii in i: # # print(ii) # if ii ...

  9. python列表去重的九种实现方式

    python列表去重的九种实现方式 实现方式非常多,但都是从几种方法延伸而来,我总结的基本方法有5种,利用复杂的流程控制,if判断进行不同的实现方式,目前延伸出9种实现方式如下,可自行测试,后面发现新 ...

最新文章

  1. Caffe将自己的文件生成lmdb
  2. Redhat, CentOS 设置系统时区
  3. Additive属性动画
  4. OpenGL反射和折射
  5. HDU-3729 二分匹配 匈牙利算法
  6. php socket主动推送消息,PHP使用WebSocket主动推送【微信小程序接收】
  7. 苹果电脑强制结束任务,快捷键
  8. 业务与技术相结合,双活体系支付架构建设
  9. mysql mgr 读写分离_MySQL Group Replication mgr 单主 proxysql 读写分离配置过程
  10. visio 取消跨线
  11. 元胞自动机小团体matlab,元胞自动机matlab程序代码
  12. ImportError: No module named urlgrabber.grabber
  13. Truffle框架的初使用
  14. 北京大学计算机社团,北京大学爱心社团
  15. 海贼王热血航线正在连接服务器,《航海王热血航线》登录异常解决方法 无法进入怎么解决...
  16. linux孤儿进程组深入理解,LInux下僵尸进程与孤儿进程是如何产生的?
  17. 常用超低阻值采样电阻阻值一览表
  18. 基于android的智能照明,一种基于Android、IOS与ZigBee的智能LED照明控制系统的制作方法...
  19. 【SystemC】(二)第一个SystemC程序
  20. 聊聊keil的外部文件引用

热门文章

  1. 如何设计优秀的APP应用图标
  2. Java平方,平方根,立方
  3. css滚动条占了宽度,css – 计算定位元素时的滚动条宽度
  4. 扑克牌魔术里面的算法
  5. python | 正则表达式re模块
  6. withRouter的使用
  7. Ubuntu突然网卡不见...
  8. Python学习笔记-编写程序,输出所有由1、2、3、4这4个数字组成的素数,要求在每个素数中每个数字最多只能使用一次。
  9. idea代码提示设置
  10. 如果五代时的后周皇帝柴荣没有英年早逝,历史将会有怎样的变化?