• 测试面试题集-Python列表去重(5)


    请定义函数,将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]中的重复元素除去,写出至少3种方法。

    • 方法一:利用集合去重

    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))
    

      

    • 方法二:利用for循环

    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)
        print(mylist_2)
    print(func2(list_2))
    

      

    • 方法三:巧用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))
    

      

    • 方法四:巧用字典

    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))
    

      

    • 方法五:利用迭代器

    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))
    

      运行结果:

      

  • 相关阅读:
    java根据汉字获取全拼和首字母
    SQL 增加或删除一列
    C#实现WinForm传值实例解析
    C# 静态类与非静态类、静态成员的区别分析
    c# 面相对象1-概括
    c# 面相对象2-之封装性
    c# 面相对象3-之继承性
    面向对象基础知识(含义、修饰符、三大特性)
    c# 面相对象4-多态性
    用集合求平均分
  • 原文地址:https://www.cnblogs.com/chenyablog/p/15172766.html
Copyright © 2020-2023  润新知