Python列表去重
请定义函数,将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]中的重复元素除去,写出至少3种方法。
# !/usr/bin/python3 # -*- coding:utf-8 -*- # @Time:2019/12/2 06:00 # @微信公众号:ITester软件测试小栈 # @Author:coco # @Python交流群:604469740 # @Email:3593721069@qq.com # @File:test.py # @Software:PyCharm #方法一:利用集合去重 list_1=[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1] def func1(list_1): """利用集合去重""" return list(set(list_1)) print('去重后的列表:',func1(list_1)) #[1, 2, 3, 10, 44, 15, 20, 56] #方法二:用for循环 '''用i遍历list,如果不在新列表中,则添加到新列表,,否则不添加进去,依次循环''' list_2 = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1] def func2(list_2): """利用列表的推导式""" #定义一个空列表 mylist_2=[] #i遍历list_2 for i in list_2: #如果i不在mylist_2,则添加到mylist_2 if i not in mylist_2: mylist_2.append(i) return list_2 print(func2(list_2)) [1, 2, 3, 10, 15, 20, 44, 56] #[1, 2, 3, 10, 44, 15, 20, 56] #方法三:用列表的sort()方法排序,默认是升序 list_3 = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1] def func3(list_3): """ 使用排序的方法 """ result_list=[] temp_list=sorted(list_3) i=0 while i<len(temp_list): #如果不在result_list则添加进去,否则i+1 if temp_list[i] not in result_list: result_list.append(temp_list[i]) else: i+=1 return result_list print(func3(list_3)) #[1, 2, 3, 10, 15, 20, 44, 56] #方法四 list_4= [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1] def func4(list_4): """ 使用字典的方式 """ #fromkeys() 函数创建一个新字典,获取新字典的键(键值是唯一的) result_list = [] for i in {}.fromkeys(list_4).keys(): result_list.append(i) return result_list print(func4(list_4)) #[10, 1, 2, 20, 3, 15, 44, 56] 从原来的列表从左到右去取,因此顺序不一样 #方法五 #迭代器模块 import itertools list_5= [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1] def func5(list_5): """利用迭代器""" list_5.sort() temp_list= itertools.groupby(list_5) result_list=[] for i,j in temp_list: result_list.append(i) return result_list print(func5(list_5)) #[1, 2, 3, 10, 15, 20, 44, 56]