python之数据序列转换并同时计算数据
2024-08-27 20:36:03
问题
你需要在数据序列上执行聚集函数(比如 sum()
, min()
, max()
), 但是首先你需要先转换或者过滤数据
解决方案
一个非常优雅的方式去结合数据计算与转换就是使用一个生成器表达式参数
比如:
import os files = os.listdir("testPackage")
print(files) # ['__init__.py', 'cookBook', 'secondPackage', 'cookBook.py'] 只会找testPackage 下面的一级文件夹及文件
if any(name.endswith('.py') for name in files):
print('There be python!') # There be python!
else:
print('Sorry, no python.') s = ('ACME', 50, 123.45)
print(','.join(str(x) for x in s)) # ACME,50,123.45
优点使用一个生成器表达式作为参数会比先创建一个临时列表更加高效和优雅(不需要两个括号),而不是这样做
举例一:
nums = [1, 2, 3, 4, 5]
s = sum([x * x for x in nums])
print(s) # # 最好的做法:
nums = [1, 2, 3, 4, 5]
s = sum(x * x for x in nums)
print(s) #
举例二
portfolio = [
{'name': 'GOOG', 'shares': 50},
{'name': 'YHOO', 'shares': 75},
{'name': 'AOL', 'shares': 20},
{'name': 'SCOX', 'shares': 65}
]
print((s['shares'] for s in portfolio)) # <generator object <genexpr> at 0x7fd797fb8af0> 是个生成器
min_shares = min(s['shares'] for s in portfolio)
print(min_shares) # # 也可以这么写
min_shares = min(portfolio, key=lambda d: d["shares"])
print(min_shares) # {'name': 'AOL', 'shares': 20}
最新文章
- 开发者最爱的Firebug停止更新和维护
- SQL:执行顺序
- WPF如何控制每个窗体确保只打开一次
- Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
- sql:pivot unpivot
- hibernate多SessionFactory配置
- PHPExcel 学习笔记
- 第四篇:SQL
- DataTables选择行并删除(删除单行)
- .NET 下成熟开源的BPM产品四款推荐
- struts2对action中的方法进行输入校验(2)
- 响应的系统设置的事件——重写onConfigurationChanged响应系统设置更改
- html统计
- 953.Verifying an Alien Dictionary(Map)
- C++STL模板库适配器之stack容器
- Educational Codeforces Round 5F. Expensive Strings
- MyBaits全局配置文件的各项标签2
- 安装Linux系统
- Apache hadoop安装配置
- 绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
热门文章
- 解决text-align: justify;浏览器、安卓手机不兼容问题
- MariaDB学习笔记(一)
- elasticsearch Java Client用户指南
- 小白struts2 札记
- 关于python全局变量
- linux IO模式以及select、poll、epoll详解
- PyTorch 计算机视觉的迁移学习教程代码详解 (TRANSFER LEARNING FOR COMPUTER VISION TUTORIAL )
- JavaSE---System类
- 【leetcode】1003. Check If Word Is Valid After Substitutions
- Halo(四)