標籤:
遇到合并多個list到一個 list 的情況。利用 chain 方法來合并多個list. 同樣也可以用來合并django 的 QuerySet.
1. python用chain 來合并多個list。chain 是用C實現的,自然效能上比較可靠。下面看下基本用法:
#coding:utf-8from itertools import chaina = [1,2,"aaa",{"name":"roy","age":100}]b = [3,4]c = [5,6]#items = a + b + citems = chain(a,b,c)for item in items: print item
輸出結果如下:
12aaa{‘age‘: 100, ‘name‘: ‘roy‘}3456
2. 在Django 總用 chain 合并多個QuerySet.本身如果在Django中如果要合并同一個model的多個QuerySet 的話,是可以採用這種方式的.
#coding:utf-8from itertools import chainfrom yihaomen.common.models import Articlearticles1 = Article.objects.order_by("autoid").filter(autoid__lt = 16).values(‘autoid‘,‘title‘)articles2 = Article.objects.filter(autoid = 30).values(‘autoid‘,‘title‘)articles = articles1 | articles2 # 注意這裡採用的方式。如果 Model相同,而且沒有用切片,並且欄位一樣時可以這樣用print articles1print articles2print articles
這樣能很好的工作,但有些局限性,對於Django 來說很多情況下也夠用了,合并到一個 QuerySet 中,然後返回到模板引擎中去處理。
3.用chain 來實現,用chain 來實現會更方便,也沒那麼多限制條件,即使是不同的MODEL中查詢出來的資料,都可以很方便的合并到一個 list 中去.
#coding:utf-8from itertools import chainfrom yihaomen.common.models import Article, UserIDarticles1 = Article.objects.order_by("autoid").filter(autoid__lt = 16).values(‘autoid‘,‘title‘)users = UserID.objects.all()items = chain(articles1, users)for item in items: print item
原文地址:合并多個python list以及合并多個 django QuerySet 的方法, 感謝原作者分享。
合并多個python list以及合并多個 django QuerySet 的方法