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中的yield函数的用法
Apr 03 Python
Python中设置变量访问权限的方法
Apr 27 Python
bpython 功能强大的Python shell
Feb 16 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
python使用response.read()接收json数据的实例
Dec 19 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
Python 如何实现数据库表结构同步
Sep 29 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 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 文件类型判断代码
2009/03/13 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
PHP高自定义性安全验证码代码
2011/11/27 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
Jquery Ajax请求代码(2)
2011/01/07 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
ExpressJS入门实例
2015/01/14 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
python自动12306抢票软件实现代码
2018/02/24 Python
python把1变成01的步骤总结
2019/02/27 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
python中的itertools的使用详解
2020/01/13 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
幼儿园母亲节活动方案
2014/03/10 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
学校标语大全
2014/06/19 职场文书
学用政策心得体会
2014/09/10 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
2014年教育工作总结
2014/11/26 职场文书
老兵退伍感言
2015/08/03 职场文书