1. 程式人生 > >Python練習題4(列表去重):[5,3,4,'ok',4,3,'abc',8,52,'ok']去除列表中重複內容 方法一:使用set 方法二:不使用set,自己寫方法

Python練習題4(列表去重):[5,3,4,'ok',4,3,'abc',8,52,'ok']去除列表中重複內容 方法一:使用set 方法二:不使用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)