python实现合并多个list及合并多个django QuerySet的方法示例
本文实例讲述了python实现合并多个list及合并多个djangoQuerySet的方法。分享给大家供大家参考,具体如下:
在用python或者django写一些小工具应用的时候,有可能会遇到合并多个list到一个list的情况。单纯从技术角度来说,处理起来没什么难度,能想到的办法很多,但我觉得有一个很简单而且效率比较高的方法是我以前没注意到的。那就是利用chain方法来合并多个list.同样也可以用来合并django的QuerySet.
1.python用chain来合并多个list
chain是用C实现的,自然性能上比较可靠。下面看下基本用法:
#coding:utf-8 fromitertoolsimportchain a=[1,2,"aaa",{"name":"roy","age":100}] b=[3,4] c=[5,6] #items=a+b+c items=chain(a,b,c) foriteminitems: printitem
输出结果如下:
1
2
aaa
{'age':100,'name':'roy'}
3
4
5
6
由此可见可以很好的合并成功。
2.在Django中用chain合并多个QuerySet.
本身如果在Django中如果要合并同一个model的多个QuerySet的话,是可以采用这种方式的.
#coding:utf-8 fromitertoolsimportchain fromyihaomen.common.modelsimportArticle articles1=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相同,而且没有用切片,并且字段一样时可以这样用 printarticles1 printarticles2 printarticles
这样能很好的工作,但有些局限性,对于Django来说很多情况下也够用了,合并到一个QuerySet中,然后返回到模板引擎中去处理。
当然也可以用chain来实现,用chain来实现会更方便,也没那么多限制条件,即使是不同的MODEL中查询出来的数据,都可以很方便的合并到一个list中去.
#coding:utf-8 fromitertoolsimportchain fromyihaomen.common.modelsimportArticle,UserID articles1=Article.objects.order_by("autoid").filter(autoid__lt=16).values('autoid','title') users=UserID.objects.all() items=chain(articles1,users) foriteminitems: printitem
这样做更方便,也很实用,对于处理某些需要合并的list然后再传输到某一个地方去的情况下,这样做很方便。
更多Python相关内容感兴趣的读者可查看本站专题:《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。