python3列表去重,python中实现列表去重的方法是

  python3列表去重,python中实现列表去重的方法是

  重复数据删除是编写python脚本时的常见问题,因为无论源数据来自哪里,当我们将其转换为列表时,都有可能预期的结果不是我们的最终结果。最常见的是列表中的元素重复。这个时候,我们首先要做的就是去重复。让我们用最简单的方法来做,使用Python内置的数据类型集。

  假设我们的列表数据如下所示:

  级别名称=[

  u 第二级:

  u 第二级:

  u 第二级:

  u 第一级:

  u“第一级”

  ]

  一个

  2

  三

  四

  五

  六

  七

  级别名称=[

  u 第二级:

  u 第二级:

  u 第二级:

  u 第一级:

  u“第一级”

  ]

  因为集合中的元素不能重复,所以在将列表转换为集合时,重复的元素将被自动删除。这是基本原理,代码如下:

  _list=set(级别_名称)

  打印(列表)

  set([u 第二层,u 第一层])

  一个

  2

  三

  _list=set(级别_名称)

  打印(列表)

  set([u 第二层,u 第一层])

  这种方法的缺点是在转换成列表时不能保存之前的列表顺序。如果你没有这个要求,这个方法是最简单的答案。可能有些朋友觉得就这么简单。难道不是技术?没错,所以一般面试问题里要求你删单一般都是这样写的:

  请写出列表重复数据删除的方法(不允许设置)。

  声明了set不能用,所以有时候这一招不能用,肯定打不过我们。我们有其他方法。

  我们都知道列表是可以遍历的,所以遍历问题很容易。我们再定义一个空链表,然后用数据遍历链表,遍历的时候再加一个判断。如果空列表中没有,就添加它,如果有就扔掉。代码如下:

  _list=[]

  对于级别名称中的级别:

  如果级别不在列表中:

  _list.append(级别)

  打印(列表)

  一个

  2

  三

  四

  五

  _list=[]

  对于级别级别名称:

  iflevelnotinthe_list:

  _list.append(级别)

  打印(列表)

  大家觉得这个方法还可以,但是处理一般的小列表还是可以的,但是如果遇到超级大的列表,就会不知所措,因为_list里面的列表变得非常大,判断的时候会影响效率,因为列表是按索引顺序搜索的,数据量大的时候会变慢。

  也许你要问,万一我碰到一个大单子呢?有没有更好的分手方式?是的,当然。我们继续。既然在判断中使用列表会影响效率,那就换个思路吧。我们用电视机。那你可能要问了,set快吗?没错,因为set使用的哈希函数查找值。虽然set是无序的,但是它的位置是固定的,只需要一次就可以发现某个特定元素是否存在。网上有人把list和set的元素搜索做了一个对比。在同样的数据条件下,使用List需要16分钟,使用set需要52秒。你看到这种比较的效果了吗?别的不说,贴代码:

  _list=[]

  _set=set()

  对于级别名称中的级别:

  如果级别不在集合中:

  _set.add(级别)

  _list.append(级别)

  打印(列表)

  一个

  2

  三

  四

  五

  六

  七

  _list=[]

  _set=set()

  对于级别级别名称:

  iflevelnotinthe_set:

  _set.add(级别)

  _list.append(级别)

  打印(列表)

  列表去重方法到此为止。欢迎转发~

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: