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检测lvs real server状态
Jan 22 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
详细分析python3的reduce函数
Dec 05 Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
Python 列表去重去除空字符的例子
Jul 20 Python
python向图片里添加文字
Nov 26 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
Jun 02 Python
python 实现图像快速替换某种颜色
Jun 04 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 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
把77A收信机改造成收音机
2021/03/02 无线电
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
Python全排列操作实例分析
2018/07/24 Python
Django实现学生管理系统
2019/02/26 Python
python变量命名的7条建议
2019/07/04 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python tkinter组件摆放方式详解
2019/09/16 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python绘制趋势图的示例
2020/09/17 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
求职信的要素有哪些呢
2013/12/26 职场文书
离婚被告答辩状
2015/05/22 职场文书
《詹天佑》教学反思
2016/02/20 职场文书