• Python求多个list的交集、并集、差集 & list 排序


    求多个list的交集、并集、差集

    list1 = [1,2,3,4,12]

    list2 = [2,4,5,6,9,78]

    list3 = [2,3,4,5,8,12,78]

    1)求多个list的交集:

    #list(set(list1).intersection(set(list2),set(list3),....))#如果有很多个,可以继续添加

    res = list(set(list1).intersection(list2,list3,....))#如果有很多个,可以继续添加

    结果应该是:res = [2,4]

    2)求多个list的并集:

    #list(set(list1).union(set(list2),set(list3),....))#如果有很多个,可以继续添加

    res = list(set(list1).union(list2,list3,....))#如果有很多个,可以继续添加

    结果应该是:res = [1,2,3,4,5,6,8,9,12,78]

    3)求多个list的差集:

    方法一:

    res = []

    for i in list1:

      if i not in list2:

        res.append(i)

    结果应该是:res = [1,3,12]  #list1中,不在list2中

    另一种简写:res = [ i for i in list1 if i not in list2]

          res = list( set(list1) ^ set(list2) )

    推荐方法:

    res = list( set(list1).difference(set(list2)))

    list排序 sort:

    1)默认sort:

    list1 =  [6, 5, 7, 9, 2, 4]

    list1.sort()#无返回值

    list1 = [2, 4, 5, 6, 7, 9]

    res1 = sorted(list1)#list1未改变,有返回值

    2)sort方法有两个可选参数:key和reverse

    key:在使用时必须提供一个排序过程总调用的函数;

    reverse:实现降序排序,需要提供一个布尔值:true /false,不写时默认false;

    list1 = ['aaaa', 'bbb', 'eeeeeee', 'cc']

    list1.sort(key=len)#按照元素的长度排序

    list1.sort(key=len, reverse=True)#按照长度降序排序

    例:

    #1按照每一个元素的len排序:

    list1= [[1,2],[3,4,5,6],(7,),'123']

    sorted(list1, key=len)

    #2按照其中每一个值的绝对值排序

    list1 = [1,3,5,-2,-4,-6]

    list2 = sorted(list1, key=abs)

    #3将列表中的每个元素变为小写,再按每个元素中的每个字母的ascii码从小到大排序

    d =['CCC', 'bb', 'ffff', 'z']

    sorted(d,key = str.lower )

     #4自定义函数排序,lastchar为函数名,这个函数返回列表e中每个元素的最后一个字母

    def lastchar(s):

    return s[-1]

    s1 = ['abc','b','AAz','ef']

    sorted(s1, key = lastchar)

    #字典元素

    dic_list = [{'name':'abc','age':20},{'name':'def','age':30},{'name':'ghi','age':25}]

    res = sorted(dic_list , key = lambda d:d['age'])

    实例:

    Django 数据库model:

    class Stu(models.Model):

      id = models.CharField('ID',max_length=20,primary_key=True)
      name = models.CharField('名称',max_length=20)

      created_time = models.DateField('创建日期')

    View查询:

    stu1 = Stu..objects.filter(id= id)

    stu2 = Stu..objects.filter(name = name)

    stu3 = Stu..objects.filter(created_time = time)

    #求stu1、stu2、stu3 的交集:
    stu_list = list(set(stu1).intersection(stu2,stu3))

    #求stu_list 按照created_time 和 id 排序,倒序

    stu_list  = sorted(stu_list, key = lambda o:(o.created_time, o.id), reverse=True)

    #以上是list中是obj元素 即对象stu

  • 相关阅读:
    day24.魔术方法 __del__ __str__ __repr __call__ __bool__ __len__ \__add__
    Hibernate事务管理
    Hibernate持久化类和Hibernate持久化对象状态
    LeetCode-Largest Rectangle in Histogram
    LeetCode-Word Break
    LeetCode-Spiral Matrix
    LeetCode-Spiral Matrix II
    LeetCode-Binary Tree Zigzag Level Order Traversal
    LeetCode-Multiply Strings
    LeetCode-Copy List with Random Pointer
  • 原文地址:https://www.cnblogs.com/yaner2018/p/12929429.html
Copyright © 2020-2023  润新知