Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例


Posted in Python onMarch 23, 2018

本文实例讲述了Python同时对数据做转换和换算处理操作。分享给大家供大家参考,具体如下:

问题:我们需要调用一个换算函数(例如sum()min()max()),但是首先需对数据做转换或者筛选处理

解决方案:非常优雅的方法---在函数参数中使用生成器表达式

例如:

# 计算平方和
nums=[1,2,3,4,5]
s1=sum((x*x for x in nums))
s2=sum(x*x for x in nums) #更优雅的用法
s3=sum([x*x for x in nums]) #不使用生成器表达式
print(s1)
print(s2)
print(s3)
# 判断一个目录下是否存在.py文件
import os
files = os.listdir(os.path.expanduser('~'))
print (files)
if any(name.endswith('.py') for name in files):
  print('There be python!')
else:
  print('Sorry, no python.')
# Output a tuple as CSV
s = ('ACME', 50, 123.45)
print(','.join(str(x) for x in s))
# Data reduction across fields of a data structure
portfolio = [
  {'name':'GOOG', 'shares': 50},
  {'name':'YHOO', 'shares': 75},
  {'name':'AOL', 'shares': 20},
  {'name':'SCOX', 'shares': 65}
]
min_shares = min(s['shares'] for s in portfolio)
print(min_shares)
min_shares2 = min(portfolio,key=lambda s:s['shares']) #使用生成器表达式
print(min_shares2)

运行结果:

55
55
55
['.idlerc', '.oracle_jre_usage', 'AppData', 'Application Data', 'Contacts', 'Cookies', 'Desktop', 'Documents', 'Downloads', 'Favorites', 'HelloWorld', 'HelloWorld.zip', 'Links', 'Local Settings', 'log.html', 'Music', 'My Documents', 'mysite', 'mysite.zip', 'NetHood', 'NTUSER.DAT', 'ntuser.dat.LOG1', 'ntuser.dat.LOG2', 'NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TM.blf', 'NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000001.regtrans-ms', 'NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000002.regtrans-ms', 'ntuser.ini', 'output.xml', 'Pictures', 'pip', 'PrintHood', 'Recent', 'report.html', 'Saved Games', 'Searches', 'SendTo', 'Templates', 'Videos', '「开始」菜单']
Sorry, no python.
ACME,50,123.45
20
{'shares': 20, 'name': 'AOL'}

总结:

该方案展示了当把生成器表达式作为函数的参数时在语法上的一些微妙之处(即,不必重复使用圆括号),比如,如下的两行代码表示的是同一个意思:

s=sum((x*x for x in nums))
s=sum(x*x for x in nums) #更优雅的用法
s3=sum([x*x for x in nums]) #不使用生成器表达式

比起首先创建一个临时列表,使用生成器做参数更为高效和优雅。

(代码摘自《Python Cookbook》)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 获取本机ip地址的两个方法
Feb 25 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
Python找出最小的K个数实例代码
Jan 04 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
pandas ix &iloc &loc的区别
Jan 10 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
python 动态迁移solr数据过程解析
Sep 04 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
Python input函数使用实例解析
Nov 22 Python
Python Django搭建网站流程图解
Jun 13 Python
Python max函数中key的用法及原理解析
Jun 26 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 #Python
python微信公众号开发简单流程
Mar 23 #Python
python3如何将docx转换成pdf文件
Mar 23 #Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 #Python
python字典快速保存于读取的方法
Mar 23 #Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 #Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 #Python
You might like
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
JSON格式化输出
2014/11/10 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
python 录制系统声音的示例
2020/12/21 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
国外的一些J2EE面试题一
2012/10/13 面试题
应聘护士自荐信
2013/10/21 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
初级职称评定工作总结
2015/08/13 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
vue使用watch监听属性变化
2022/04/30 Vue.js
python实现双链表
2022/05/25 Python