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实现挑选出来100以内的质数
Mar 24 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
python使用PyGame播放Midi和Mp3文件的方法
Apr 24 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
python 全局变量的import机制介绍
Sep 07 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
Django框架反向解析操作详解
Nov 28 Python
Java多线程实现四种方式原理详解
Jun 02 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
详解python3 GUI刷屏器(附源码)
Feb 18 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 Python
讲解Python实例练习逆序输出字符串
May 06 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两种去掉数组重复值的方法比较
2014/06/19 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
python中Genarator函数用法分析
2015/04/08 Python
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python让列表倒序输出的实例
2018/06/25 Python
Python3匿名函数用法示例
2018/07/25 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
商务英语专业毕业生自荐信
2013/11/05 职场文书
村干部培训方案
2014/05/02 职场文书
领导班子整改方案
2014/10/25 职场文书
六一文艺汇演主持词
2015/06/30 职场文书