博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习笔记(3):数据集操作-列的统一操作
阅读量:6969 次
发布时间:2019-06-27

本文共 778 字,大约阅读时间需要 2 分钟。

对数据库查询,将得到一个数据集:

rs=AccessDB.GetData("select * from log where f_code='600259' limit 5,5")

结果的每行对应一个元组:

数据集是一个游标,只能用一次,如果需要反复查询,可以转换为列表再操作。

 

但是,如果只能通过逐行循环来处理,就和以前的程序没啥区别了。我设定了一个小目标:合计一下第8列(金额),看Python能否有所不同。

尝试1:用map取出第8列,再用reduce合并。

其中需要注意,reduce中,前一次的结果将作为参数参与下一次的计算,但到底是第几个参数,写了一个代码试验了一下,应该是第一个:

尝试2:不用map,直接用reduce,关键是第一个参数是元组,但后面的又都是数值,只能考虑在前面附加一个数值。但rs无法附加,所以只能对转换的列表操作。

也能成功,但总是不满意,转换为列表也有一定的耗费,最好能在游标的基础上来处理。

尝试3:对参数进行判断,如果是初始状态(元组类型),则用分量操作,否则,直接操作。

python的分支判断取值,有两种方式:

 条件 and 真的取值 or 假的取值

 真的取值 if 条件 else 假的取值

但第一种在真的取值为“假”时会错误,所以使用第二种。

第三种方法,以元组作为reduce的参数,传递进入后,通过类型判断解决第一次类型问题,还能再进一步扩展。

 

from functools import reduce

>>> reduce(lambda x,y:x+y,map(lambda x:x[7],rs))
>>> reduce(lambda x,y:x+y[7],[0]+ct)
>>> reduce(lambda x,y:(x[7] if type(x)==tuple else x)+y[7],rs)

转载地址:http://zdasl.baihongyu.com/

你可能感兴趣的文章
使用Button组件
查看>>
各Spring-Boot-Starters介绍(转)
查看>>
测试赛3部分题题解及总结
查看>>
阿里巴巴为什么主推HSF?比Dubbo有哪些优势?
查看>>
AI技术落地医疗搜索 搜狗明医独家首推“湿疹痱子识别”功能
查看>>
中国又一项技术让世界叹服,世界500强抢着合作!
查看>>
年薪百万都招不来人,AI与区块链的技术人才有多稀缺?|技术大会
查看>>
一起撸个朋友圈吧 - 重构
查看>>
图片懒加载
查看>>
「面经:面试 ThoughtWorks | 掘金技术征文」
查看>>
Android和iOS开发中的异步处理(四)——异步任务和队列
查看>>
iOS开发之 Autolayout 详解
查看>>
ijkplayer如何使用FFmpeg 4.0内核?
查看>>
HBase2.0中的Benchmark工具 — PerformanceEvaluation
查看>>
基于 Docker 打造前端持续集成开发环境
查看>>
[case1]记一次spring schedule异常
查看>>
五分钟了解微服务
查看>>
Android从零开始(第四篇)网络框架MVP+Retrofit+Rxjava
查看>>
Android逆向从未如此简单
查看>>
从Android Studio 开始的ARCore之旅
查看>>