Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
本文实例讲述了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函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
- 常用python数据类型转换函数总结
- 浅谈Python数据类型之间的转换
- Python实现列表转换成字典数据结构的方法
- python 数据清洗之数据合并、转换、过滤、排序
- python数据预处理之将类别数据转换为数值的方法
- python数据结构之二叉树的统计与转换实例
- 浅谈python数据类型及类型转换
- 利用python将json数据转换为csv格式的方法
- Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
- Python cookbook(数据结构与算法)对切片命名清除索引的方法
- Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
- Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
相关文章
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
这篇文章主要介绍了matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01使用Anaconda3建立虚拟独立的python2.7环境方法
今天小编就为大家分享一篇使用Anaconda3建立虚拟独立的python2.7环境方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-06-06python 利用pandas将arff文件转csv文件的方法
今天小编就为大家分享一篇python 利用pandas将arff文件转csv文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-02-02Python内置函数之filter map reduce介绍
Python内置了一些非常有趣、有用的函数,如:filter、map、reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车2014-11-11详解Python解决抓取内容乱码问题(decode和encode解码)
这篇文章主要介绍了Python解决抓取内容乱码问题(decode和encode解码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-03-03
最新评论