1 列表生成式和生成器
from numpy import random
a = random.random(10000)
lst = []
for i in a:
lst.append(i * i) # 不推荐做法
lst = [i * i for i in a] # 使用列表生成式
gen = (i * i for i in a) # 生成器更节省内存
2 字典推导式创建子集
a = {'apple': 5.6, 'orange': 4.7, 'banana': 2.8}
da = {key: value for key, value in a.items() if value > 4.0}
print(da) # {'apple': 5.6, 'orange': 4.7}
3 Key使用itemgetter多字段排序
from operator import itemgetter
a = [{'date': '2019-12-15', 'weather': 'cloud'},
{'date': '2019-12-13', 'weather': 'sunny'},
{'date': '2019-12-14', 'weather': 'cloud'}]
a.sort(key=itemgetter('weather', 'date'))
print(a)
# [{'date': '2019-12-14', 'weather': 'cloud'}, {'date': '2019-12-15', 'weather': 'cloud'}, {'date': '2019-12-13', 'weather': 'sunny'}]
4 Key使用itemgetter分组
from operator import itemgetter
from itertools import groupby
a.sort(key=itemgetter('weather', 'date')) # 必须先排序再分组
for k, items in groupby(a, key=itemgetter('weather')):
print(k)
for i in items:
print(i)
5 sum类聚合函数与生成器
Python中的聚合类函数sum,min,max第一个参数是iterable类型,一般使用方法如下:
a = [4,2,5,1]
sum([i+1for i in a]) # 16
使用列表生成式[i+1 for i in a]创建一个长度与a一样的临时列表,这步完成后,再做sum聚合。
试想如果你的数组a长度是百万级,再创建一个这样的临时列表就很不划算,最好是一边算一边聚合,稍改动为如下:
a = [4,2,5,1]
sum(i+1for i in a) # 16
此时i+1 for i in a是(i+1 for i in a)的简写,得到一个生成器(generator)对象,如下所示:
In [8]:(i+1for i in a)
OUT [8]: at 0x000002AC7FFA8CF0>
生成器每迭代一步吐出(yield)一个元素并计算和聚合后,进入下一次迭代,直到终点。
6 ChainMap逻辑上合并多个字典
dic1 = {'x': 1, 'y': 2 }
dic2 = {'y': 3, 'z': 4 }
merged = {**dic1, **dic2} # {'x': 1, 'y': 3, 'z': 4}
修改merged['x']=10,dic1中的x值不变
ChainMap只在逻辑上合并,在内部创建了一个容纳这些字典的列表。
from collections import ChainMap
merged = ChainMap(dic1,dic2)
print(merged)
# ChainMap({'x': 1, 'y': 2}, {'y': 3, 'z': 4})
使用ChainMap合并字典,修改merged['x']=10,dic1中的x值审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内存
+关注
关注
9文章
3173浏览量
76121 -
生成器
+关注
关注
7文章
322浏览量
22509 -
python
+关注
关注
57文章
4858浏览量
89600
发布评论请先 登录
相关推荐
热点推荐
C语言的printf基本用法介绍
个小数。f 是 float 的简写。
除了这些,printf 支持更加复杂和优美的输出格式,考虑到读者的基础暂时不够,我们将在《C语言数据输出大汇总以及轻量进阶》一节中展开讲解。
我们把代码补充完整
发表于 11-12 07:04
CDC204 3.3V六路反相器/时钟驱动器技术文档总结
CDC204 包含六个独立的逆变器。该器件执行布尔函数 Y = A\。它专为开关输出之间需要低偏斜的应用而设计。
CDC204 的特点是从 T ~一个~ = 25°C 至 70°C。
Linux基础命令的进阶用法
凌晨2点,正在熟睡的你被电话惊醒:"线上服务响应超时,用户大面积投诉!" 你匆忙打开电脑,SSH 登录服务器,面对满屏的进程和日志,脑子一片空白——从哪里开始排查?用什么命令?怎么快速定位问题?
termux调试python猜数字游戏
用termux做一个猜数字游戏
下面是在Termux中创建猜数字游戏的步骤及完整实现方案,结合Python实现(最适配Termux环境):
? 一、环境准备(Termux基础配置)
1.
发表于 08-29 17:15
SN74AHCT04六路反相器技术解析与应用指南
Texas Instruments SN74AHCT04六路逆变器包含六个独立的逆变器并执行布尔函数Y = A。Texas Instruments SN74AHCT04具有TTL输入电平,允许从3.3V向上转换到5V。
Altium Designer PCB设计高级进阶
对PCB设计的高级进阶的内容进行相关的介绍
纯分享贴,有需要可以直接下载附件获取完整资料!
(如果内容有帮助可以关注、点赞、评论支持一下哦~)
发表于 04-27 16:40
python入门圣经-高清电子书(建议下载)
和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容;
第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python
发表于 04-10 16:53
函数指针的六个常见应用场景
函数指针在嵌入式开发中有着广泛的应用,它让代码更加灵活,减少冗余,提高可扩展性。很多时候,我们需要根据不同的情况动态调用不同的函数,而函数指针正是实现这一需求的重要工具。本文将介绍六个常见的函数指针
零基础入门:如何在树莓派上编写和运行Python程序?
在这篇文章中,我将为你简要介绍Python程序是什么、Python程序可以用来做什么,以及如何在RaspberryPi上编写和运行一个简单的Pyth
LM5175的四开关管升降压开关电源,导出的原理图中有六个开关管,为什么M3、M4各自需要并联一个一样的开关管呢?
就是我利用TI上导出关于LM5175芯片的四开关管升降压开关电源,导出的原理图中有六个开关管,我想知道为什么M3、M4各自需要并联一个一样的开关管呢?
发表于 02-26 08:24
AFE5801 fclkin只能输入只列出了65、50、40、30、20、10MHz这六个值吗?
在datasheet的第8页的 Output Interface Timing表格中,fclkin(输入采样时钟)只列出了65、50、40、30、20、10MHz这六个值。这意味着fclkin只能输入这六个值吗?如果我希望采样时钟是18M,可以吗?
发表于 02-11 07:29
ADS805E的转换结果要延后六个采样周期才输出吗?
这时序图是说明ADS805E这款芯片的转换结果要延后六个采样周期才输出吗?即图中的Analog In中的N点对应的转换后的Data Out中的N 吗?还是说,这时序图是说明此芯片在上电后的前六个
发表于 01-23 07:50

六个Python进阶用法介绍
评论