码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-01-05 13:33:57      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:取出   python练习   class   count   代码量   元素   rem   排序   列表   

方法一:利用集合去重

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 方法二:不使用set,自己写方法

标签:取出   python练习   class   count   代码量   元素   rem   排序   列表   

原文地址:https://www.cnblogs.com/felixqiang/p/10223852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!