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中的getopt函数使用详解
Jul 28 Python
利用Python如何生成随机密码
Apr 20 Python
Python进程间通信之共享内存详解
Oct 30 Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
Python数学形态学实例分析
Sep 06 Python
Flask缓存静态文件的具体方法
Aug 02 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
Python常用断言函数实例汇总
Nov 30 Python
python3 删除所有自定义变量的操作
Apr 08 Python
Python 实现定积分与二重定积分的操作
May 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
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
python散点图实例之随机漫步
2018/08/27 Python
python生成带有表格的图片实例
2019/02/03 Python
python实现扫描ip地址的小程序
2019/04/16 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
Python更新所有已安装包的操作
2020/02/13 Python
Python PyQt5整理介绍
2020/04/01 Python
什么是python类属性
2020/06/10 Python
详解python logging日志传输
2020/07/01 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
新学期开学演讲稿
2014/05/24 职场文书
体育馆的标语
2014/06/24 职场文书
大学生操行评语大全
2014/12/31 职场文书
通知范文怎么写
2015/04/16 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript