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迭代器的使用方法实例
Nov 21 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
Python之web模板应用
Dec 26 Python
python切片及sys.argv[]用法详解
May 25 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
python3 拼接字符串的7种方法
Sep 12 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
python 实现IP子网计算
Feb 18 Python
python爬虫破解字体加密案例详解
Mar 02 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
jquery选择器简述
2015/08/31 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
幼儿园校车司机的岗位职责
2014/01/30 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
2014年节能工作总结
2014/12/18 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers