• 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]
    

      

  • 相关阅读:
    [最新]制作u盘引导安装ubuntu11.04
    js记录
    下面的代码有什么不妥之处
    Oracle常用命令
    蓝天下,献给你,html5
    无意义的小东西
    sql中,把varchar类型转换为int型,然后进行排序
    身边的人,来来去去
    不一定能写出来的求素数问题
    写在第一百篇博客之际
  • 原文地址:https://www.cnblogs.com/ITester520/p/12012717.html
Copyright © 2020-2023  润新知