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 相关文章推荐
用python读写excel的方法
Nov 18 Python
Python Web框架Flask中使用百度云存储BCS实例
Feb 08 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
python实现AES和RSA加解密的方法
Mar 28 Python
六行python代码的爱心曲线详解
May 17 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
简单了解django orm中介模型
Jul 30 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
Python 从attribute到property详解
Mar 05 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 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
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
Symfony生成二维码的方法
2016/02/04 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
深入理解JavaScript 箭头函数
2019/05/30 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
Python实现的括号匹配判断功能示例
2018/08/25 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Python实现微信小程序支付功能
2019/07/25 Python
django之自定义软删除Model的方法
2019/08/14 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
T3官网:头发造型工具
2019/12/26 全球购物
个人简历自我鉴定
2013/10/11 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
入股协议书
2014/04/14 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
管理提升方案
2014/06/04 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
2014年路政工作总结
2014/12/10 职场文书
爱心捐款活动总结
2015/05/09 职场文书
小学语文教学反思范文
2016/03/03 职场文书