Python练习题4(列表去重):[5,3,4,'ok',4,3,'abc',8,52,'ok']去除列表中重复内容 方法一:使用set 方法二:不使用

Posted felixqiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python练习题4(列表去重):[5,3,4,'ok',4,3,'abc',8,52,'ok']去除列表中重复内容 方法一:使用set 方法二:不使用相关的知识,希望对你有一定的参考价值。

方法一:利用集合去重

1 list1 = [5,3,4,ok,4,3,abc,8,52,ok]
2 list1=list(set(list1))
3 print(list1)

方法二:此方法略微冗余,先判断元素是否重复,再将重复元素提取并保存到新列表中,再for 新建的列表元素,删除原列表

 1 def list_dup(ls):
 2     list2 = []
 3     length = len(ls)                  #获取列表元素个数
 4     for i in range(0,length-1):
 5         for j in range(0,length-1):
 6             if ls[i] == ls[j]:        #判断元素是否重复
 7                 list2.append(ls[j])   #将重复的元素提取出来(注:会重复提取)
 8     #for i in ls:
 9         #if ls.count(i) > 1:          #另一种方法,用for和count()提取出重复元素
10             #list2.append(i)
11     for n in list2:
12         if ls.count(n) > 1:           #判断元素的重复次数,大于1的,删除该元素
13             ls.remove(n)
14             #del ls[ls.index(n)]      #用del删除
15     return ls
16 list1 = [5,3,4,ok,4,3,abc,8,52,ok]
17 print(list_dup(list1))

方法三:for循环列表元素,判断是否重复,并删除(注意:不能循环原列表删除,会报out of range错误)

1 def list_dup(ls):
2     for i in ls[:]:                   #循环复制的列表,可避免报out of range错误
3         if ls.count(i) > 1:           #判断元素的重复次数,大于1的,删除该元素
4             ls.remove(i)
5     return ls
6 
7 list1 = [5,3,4,ok,4,3,abc,8,52,ok]
8 print(list_dup(list1))

方法四:由方法三变化,用递归来实现。--by 孟楠兄

def list_dup(ls):
    for i in ls:
        if ls.count(i) > 1:
            ls.remove(i)
            list_dup(ls)              #递归
    return ls

list1 = [5,3,4,ok,4,3,abc,8,52,ok]
print(list_dup(list1))

方法五:用in 和 not in,代码量最小,最简单,同时也不改变原列表排序

list1 = [5,3,4,ok,4,3,abc,8,52,ok]
list2 = []
for n in list1:
    if n not in list2:
        list2.append(n)
print(list2)

以上是关于Python练习题4(列表去重):[5,3,4,'ok',4,3,'abc',8,52,'ok']去除列表中重复内容 方法一:使用set 方法二:不使用的主要内容,如果未能解决你的问题,请参考以下文章

python列表的去重

Python面试题11-[[1,2],[3,4],[5,6]]一行代码展开该列表得出[1,2,3,4,5,6]s = "ajldjlajfdljfddd",先去重并从小到大排序输(

python 日常已记 列表去重

Python 简单练习题100道,

2.5.1 集合操作

python-list