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中的pydoc模块和distutils模块
Apr 13 Python
分享Python字符串关键点
Dec 13 Python
Python程序员面试题 你必须提前准备!
Jan 16 Python
python 获取字符串MD5值方法
May 29 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
python爬取微博评论的实例讲解
Jan 15 Python
python爬虫框架feapde的使用简介
Apr 20 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 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提取中文首字母
2008/04/09 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
JS异步函数队列功能实例分析
2017/11/28 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
python中的函数用法入门教程
2014/09/02 Python
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
进一步探究Python中的正则表达式
2015/04/28 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
python自动化办公操作PPT的实现
2021/02/05 Python
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
大专毕业生简历的自我评价
2013/10/20 职场文书
网上书店创业计划书
2014/01/12 职场文书
产品质量保证书
2014/04/29 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
vue实现在data里引入相对路径
2022/06/05 Vue.js