Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例

 更新时间:2018年03月23日 11:55:05   作者:垄上行  
这篇文章主要介绍了Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作,涉及Python使用生成器表达式进行数据处理的相关操作技巧,需要的朋友可以参考下

本文实例讲述了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中Functools模块的高级操作详解

    Python中Functools模块的高级操作详解

    functools模块是Python标准库中的一个宝库,提供了一些有用的功能,可以帮助您更好地利用函数的潜力,下面小编就来为大家介绍一下functools模块的相关具体使用吧
    2023-11-11
  • Python搭建监控平台的实现示例

    Python搭建监控平台的实现示例

    本文主要介绍了Python搭建监控平台的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • python 控制Asterisk AMI接口外呼电话的例子

    python 控制Asterisk AMI接口外呼电话的例子

    今天小编就为大家分享一篇python 控制Asterisk AMI接口外呼电话的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python内置数据类型list各方法的性能测试过程解析

    Python内置数据类型list各方法的性能测试过程解析

    这篇文章主要介绍了Python内置数据类型list各方法的性能测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python操作SQLite/MySQL/LMDB数据库的方法

    Python操作SQLite/MySQL/LMDB数据库的方法

    这篇文章主要介绍了Python操作SQLite/MySQL/LMDB数据库的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Python 函数编编程的三大法宝map+filter+reduce分享

    Python 函数编编程的三大法宝map+filter+reduce分享

    这篇文章主要介绍了Python 函数编编程的三大法宝map,filter,reduce的分享,python利用 map 在一个可迭代对象的各项上调用函数的工具;利用 filter 来过滤项;利用 reduce 把函数作用在成对的项上来运行结果的工具,下面我们就来对这三者进行详细的介绍,需要的朋友可以参考下
    2022-03-03
  • pycharm 如何取消连按两下shift出现的全局搜索

    pycharm 如何取消连按两下shift出现的全局搜索

    这篇文章主要介绍了pycharm 如何取消连按两下shift出现的全局搜索?下面小编就为大家介绍一下解决方法,还等什么?一起跟随小编过来看看吧
    2021-01-01
  • 通过实例解析Python RPC实现原理及方法

    通过实例解析Python RPC实现原理及方法

    这篇文章主要介绍了通过实例解析Python RPC实现原理及方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 解决jupyter运行pyqt代码内核重启的问题

    解决jupyter运行pyqt代码内核重启的问题

    这篇文章主要介绍了解决jupyter运行pyqt代码内核重启的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python实现破解12306图片验证码的方法分析

    Python实现破解12306图片验证码的方法分析

    这篇文章主要介绍了Python实现破解12306图片验证码的方法,涉及Python图片截取、调用百度识图及正则截取等相关操作技巧,需要的朋友可以参考下
    2017-12-12

最新评论