求多個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