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 21 Python
python操作字典类型的常用方法(推荐)
May 16 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
Python hexstring-list-str之间的转换方法
Jun 12 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
关于Python中定制类的比较运算实例
Dec 19 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
容易被忽略的Python内置类型
Sep 03 Python
python设置中文界面实例方法
Oct 27 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
使用python实现飞机大战游戏
2020/03/23 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
世界上最大的二手相机店:KEN
2017/05/17 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
总经理职责范文
2013/11/08 职场文书
个人实习生的自我评价
2014/02/16 职场文书
初三学习决心书
2014/03/11 职场文书
公务员诚信承诺书
2014/05/26 职场文书
青年文明号汇报材料
2014/12/23 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js