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的几条建议分享
Feb 10 Python
详解Python2.x中对Unicode编码的使用
Apr 03 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
Python smtplib实现发送邮件功能
May 22 Python
pandas 根据列的值选取所有行的示例
Nov 07 Python
Django中使用Celery的方法示例
Nov 29 Python
如何在Django项目中引入静态文件
Jul 26 Python
python实现图像拼接
Mar 05 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
Python实现排序方法常见的四种
Jul 15 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
Python守护线程用法实例
2017/06/23 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
基于python实现查询ip地址来源
2020/06/02 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
土木工程实习生自我鉴定
2013/09/19 职场文书
水利学院求职自荐书
2014/02/01 职场文书
语文教学感言
2014/02/06 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
先进个人申报材料
2014/12/30 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
总结一些Java常用的加密算法
2021/06/11 Java/Android