问题

你需要在数据序列上执行聚集函数(比如 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}

  

python之数据序列转换并同时计算数据的更多相关文章

  1. 【小工具系列】Python + OpenCV 图片序列转换成视频

    图片序列转换成视频 最近一直在找一个工具,能够将一堆图片转化成视频.网上找了一些小软件,还有 win10 的照片自带的视频制作功能,都不是很满意. 又不想下载那些专业的视频剪辑软件大材小用. 然后找到 ...

  2. Python文本数据互相转换(pandas and win32com)

    (工作之后,就让自己的身心都去休息吧) 今天介绍一下文本数据的提取和转换,这里主要实例的转换为excel文件(.xlsx)转换world文件(.doc/docx),同时需要使用win32api,同py ...

  3. python json数据的转换

    1  Python数据转json字符串 import json json_str = json.dumps(py_data) 参数解析: json_str = json.dumps(py_data,s ...

  4. python 爬虫数据时间转换格式

    from datetime import datetimea = '2018/9/18 10/10'print(datetime.strptime(a,'%Y/%m/%d %H/%M'))>&g ...

  5. 【python cookbook】【数据结构与算法】19.同时对数据做转换和换算

    问题:我们需要调用一个换算函数(例如sum().min().max()),但是首先需对数据做转换或者筛选处理 解决方案:非常优雅的方法---在函数参数中使用生成器表达式 例如: # 计算平方和 num ...

  6. Python中xml、字典、json、类四种数据的转换

    最近学python,觉得python很强很大很强大,写一个学习随笔,当作留念注:xml.字典.json.类四种数据的转换,从左到右依次转换,即xml要转换为类时,先将xml转换为字典,再将字典转换为j ...

  7. Python之数据规整化:清理、转换、合并、重塑

    Python之数据规整化:清理.转换.合并.重塑 1. 合并数据集 pandas.merge可根据一个或者多个不同DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象 ...

  8. python实现DNA序列字符串转换,互补链,反向链,反向互补链

    在生物信息学分析中,经常对DNA序列进行一系列操作,包括子序列截取,互补序列获取,反向序列获取,反向互补序列获取.在python语言中,可编写如下函数完成这些简单功能. 子序列截取 python中对序 ...

  9. python之数据解构和算法进阶

    1.解压赋值多个变量 采用解构的方法.可迭代对象才可以,变量数量与元素个数要一一对应,或者采用*万能接收. 2.解压可迭代对象赋值多个变量 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 Va ...

随机推荐

  1. linux 登录失败,修改root密码

      开机按下 esc  重启系统后出现GRUB界面在引导装载程序菜单上,用上下方向键选择你忘记密码的那个系统键入“e” 来进入编辑模式.   接下来你可以看到如下图所示的画面,然后你再用上下键选择最新 ...

  2. matplotlib系列——条形图

    import matplotlib.pyplot as plt import numpy as np import matplotlib x = ["战狼2","激情8& ...

  3. elementUI table宽度自适应fit

    :fit='true' 或者直接为 fit

  4. mapreduce实验

    代码: public class WordCount { public static void main(String[] args) throws IOException, ClassNotFoun ...

  5. mac系统下安装和启动nginx

    1.在线安装 localhost:nginx-1.17.1 mhx$ sudo brew install nginx 2.查看是否安装成功 localhost:nginx-1.17.1 mhx$ ng ...

  6. 低门槛彻底理解JavaScript中的深拷贝和浅拷贝

    作者 | 吴胜斌 来源 | https://www.simbawu.com/article/search/9 在说深拷贝与浅拷贝前,我们先看两个简单的案例: //案例1var num1 = 1, nu ...

  7. QUIC协议学习记录

    QUIC(Quick UDP Internet Connections,快速UDP互联网连接)是Google提出的一种基于UDP改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验. Q ...

  8. Python基础教程(012)--排查手误错误

    前言 排查由于手误书写错误的方法 内容 手动输入错误的时候,颜色是红色 函数名称写错 1,颜色不一样 2,nameError错误 掌握知识点 学会在写代码的时候排查错误

  9. BZOJ 1006: [HNOI2008]神奇的国度(弦图)

    传送门 解题思路 弦图就是图中任意一个大小\(>=4\)的环至少存在一条两个节点不相邻的边,这样的图称为弦图,弦图有许多优美的性质.一个无向图是弦图当且仅当它有一个完美消除序列,完美消除序列就是 ...

  10. python进阶:类和对象

    @修饰符:将被修饰的函数作为参数,运行修饰函数 实例方法: 静态方法:@staticmethod 类方法:@classmethod 自省:通过一定的机制查询到对象的内部结构 序列类: 列表推导式(例表 ...