相关疑难解决方法(0)

过滤字典只包含某些键?

我有一个dict有一大堆条目.我只对他们中的一小部分感兴趣.是否有一种简单的方法可以修剪所有其他的?

python dictionary

430
推荐指数
13
解决办法
27万
查看次数

消耗迭代器的最快(最Pythonic)方式

我很好奇消耗迭代器的最快方法是什么,以及最恐怖的方式.

例如,假设我想创建一个带有map内置函数的迭代器,它会积累一些副作用.我实际上并不关心结果map,只是副作用,所以我希望尽可能少地使用开销或样板来完成迭代.就像是:

my_set = set()
my_map = map(lambda x, y: my_set.add((x, y)), my_x, my_y)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我只是想通过迭代器来积累内容my_set,并且my_set只是一个空集,直到我实际运行my_map.就像是:

for _ in my_map:
    pass
Run Code Online (Sandbox Code Playgroud)

或赤身裸体

[_ for _ in my_map]
Run Code Online (Sandbox Code Playgroud)

工作,但他们都觉得笨重.是否有更多的Pythonic方法来确保迭代器快速迭代,以便您可以从一些副作用中受益?


基准

我在上面测试了上面的两种方法:

my_x = np.random.randint(100, size=int(1e6))
my_y = np.random.randint(100, size=int(1e6))
Run Code Online (Sandbox Code Playgroud)

my_setmy_map如上所定义.我用timeit获得了以下结果:

for _ in my_map:
    pass
468 ms ± 20.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

[_ for _ in my_map]
476 …
Run Code Online (Sandbox Code Playgroud)

python optimization iterator python-3.x

10
推荐指数
2
解决办法
966
查看次数

标签 统计

python ×2

dictionary ×1

iterator ×1

optimization ×1

python-3.x ×1