python实现合并多个list及合并多个django QuerySet的方法示例


Posted in Python onJune 11, 2019

本文实例讲述了python实现合并多个list及合并多个django QuerySet的方法。分享给大家供大家参考,具体如下:

在用python或者django写一些小工具应用的时候,有可能会遇到合并多个list到一个 list 的情况。单纯从技术角度来说,处理起来没什么难度,能想到的办法很多,但我觉得有一个很简单而且效率比较高的方法是我以前没注意到的。那就是利用 chain 方法来合并多个list. 同样也可以用来合并django 的 QuerySet.

1. python用chain 来合并多个list

chain 是用C实现的,自然性能上比较可靠。下面看下基本用法:

#coding:utf-8
from itertools import chain
a = [1,2,"aaa",{"name":"roy","age":100}]
b = [3,4]
c = [5,6]
#items = a + b + c
items = chain(a,b,c)
for item in items:
  print item

输出结果如下:

1
2
aaa
{'age': 100, 'name': 'roy'}
3
4
5
6

由此可见可以很好的合并成功。

2. 在Django 中用 chain 合并多个QuerySet.

本身如果在Django中如果要合并同一个model的多个QuerySet 的话,是可以采用这种方式的.

#coding:utf-8
from itertools import chain
from yihaomen.common.models import Article
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相同,而且没有用切片,并且字段一样时可以这样用
print articles1
print articles2
print articles

这样能很好的工作,但有些局限性,对于Django 来说很多情况下也够用了,合并到一个 QuerySet 中,然后返回到模板引擎中去处理。

当然也可以用chain 来实现,用chain 来实现会更方便,也没那么多限制条件,即使是不同的MODEL中查询出来的数据,都可以很方便的合并到一个 list 中去.

#coding:utf-8
from itertools import chain
from yihaomen.common.models import Article, UserID
articles1 = 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

这样做更方便,也很实用, 对于处理某些需要合并的list 然后再传输到某一个地方去的情况下,这样做很方便。

更多Python相关内容感兴趣的读者可查看本站专题:《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
Python深入学习之对象的属性
Aug 31 Python
详解Python中的文件操作
Aug 28 Python
Python中的浮点数原理与运算分析
Oct 12 Python
Python分析学校四六级过关情况
Nov 22 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
python进程间通信Queue工作过程详解
Nov 01 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
Python如何急速下载第三方库详解
Nov 02 Python
Python GUI编程 文本弹窗的实例
Jun 11 #Python
Python API 自动化实战详解(纯代码)
Jun 11 #Python
Python-while 计算100以内奇数和的方法
Jun 11 #Python
python操作文件的参数整理
Jun 11 #Python
python语言基本语句用法总结
Jun 11 #Python
python实现对象列表根据某个属性排序的方法详解
Jun 11 #Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 #Python
You might like
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
python中正则表达式的使用详解
2014/10/17 Python
粗略分析Python中的内存泄漏
2015/04/23 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
详解python with 上下文管理器
2020/09/02 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
西尔斯百货官网:Sears
2016/09/06 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
《画家乡》教学反思
2014/04/22 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
家长意见书
2015/06/04 职场文书