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
值审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内存
+关注
关注
8文章
2763浏览量
72748 -
生成器
+关注
关注
7文章
302浏览量
20205 -
python
+关注
关注
51文章
4671浏览量
83457
发布评论请先 登录
相关推荐
python中open函数的用法详解
python中open函数的用法详解 Python中的open()函数用于打开文件。它接受文件名和模式作为参数,并返回一个文件对象。文件对象可用于读取、写入和管理文件。 open()函数的基本语法
ADXL1001六个引脚,是VDD GND接电源,然后ST STB也要接地Vout才会有正确的输出结果?
这个评估版共六个引脚,是VDD GND接电源,然后ST STB也要接地,Vout才会有正确的输出结果吗
发表于 12-28 08:10
split在python中的用法
split在python中的用法 split()是Python中一个非常常用的字符串函数,它能够根据指定的分隔符将一个字符串分割成多个子字符串,并返回一个包含这些子字符串的列表。本文将详细介绍
python中text的用法
可以使用text(字符串)进行各种操作,例如创建、访问、修改、连接、比较和搜索等。下面将详细介绍Python中使用text的各种用法。 创建和访问文本: 在Python中,我们可以使用
python中tuple的用法
使用逗号进行分隔。元组在Python中具有许多有用的特性和用法,本文将详尽、详实、细致地介绍Python中元组的全部内容。 首先,元组可以用来存储多个值。与列表不同的是,元组一旦创建就
python里item的用法
item是Python中一个非常重要的概念,它可以用于多种数据结构和算法的实现。在Python中,item通常用于表示一个集合或序列中的一个元素。本文将详细介绍item的用法,并探讨它
python中insert函数的用法
Python中的insert()函数用于在列表中的指定位置插入元素。它的基本语法如下: list .insert(index, element) 其中,index表示要插入元素的位置,element
zip():Python 中最好用的内置类型之一
之迭代器模式 》中简单地介绍过它,前几天翻译了 Python 3.10 采纳的 PEP-618 ,介绍了它将会迎来的变更。 但是,还有不少同学并不知道 zip(),或者不能熟练掌握它的用法
元组的基础用法和进阶用法
元组是 Rust 语言中一种非常有用的数据结构,它可以将多个不同类型的值组合在一起。本教程将介绍元组的基础用法和进阶用法,并结合示例代码进行讲解。 元组是一种有序的数据集合,其中每个元
AsyncRead和AsyncWrite 模块进阶用法示例
AsyncRead 和 AsyncWrite 模块。这两个模块是非常重要的,它们可以让我们在异步编程中更加方便地读写数据。本教程将围绕这两个模块,提供基础和进阶用法的示例,帮助读者更好地理解和使用它
基于Rust语言Hash特征的基础用法和进阶用法
,包括Hash trait、HashMap、HashSet等,本教程将详细介绍Rust语言Hash特征的基础用法和进阶用法。 基础用法 使用
基于select!宏的进阶用法
宏,它可以让我们同时监听多个异步事件,一旦其中一个事件触发,就可以立即执行相应的代码。在本教程中,我们将详细介绍 select!宏的进阶用法,并提供多个示例来帮助您更好地理解和掌握这个宏的使用方法。
SQLx在Rust语言中的基础用法和进阶用法
SQLx是一个Rust语言的异步SQL执行库,它支持多种数据库,包括MySQL、PostgreSQL、SQLite等。本教程将以MySQL数据库为例,介绍SQLx在Rust语言中的基础用法和进阶
SQLx的基础用法和进阶用法
SQLx是一个Rust语言的异步SQL数据库访问库,支持多种数据库,包括PostgreSQL、MySQL、SQLite等。本教程将以SQLite为例,介绍SQLx的基础用法和进阶用法。
评论