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简单实现enum功能的方法
Apr 25 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
Python通过Django实现用户注册和邮箱验证功能代码
Dec 11 Python
python-str,list,set间的转换实例
Jun 27 Python
解决pandas中读取中文名称的csv文件报错的问题
Jul 04 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
Python如何省略括号方法详解
Mar 21 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 Python
python 实现的IP 存活扫描脚本
Dec 10 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面对对象编程的多态
2015/08/12 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
浅谈python函数之作用域(python3.5)
2017/10/27 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Django配置文件代码说明
2019/12/04 Python
Python 防止死锁的方法
2020/07/29 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
Python如何定义一个函数
2015/09/01 面试题
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
新春寄语大全
2014/04/09 职场文书
食品安全演讲稿
2014/09/01 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
教师节寄语2015
2015/03/23 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
战马观后感
2015/06/08 职场文书
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js