小编Chr*_*549的帖子

为什么汇总列表理解比生成器表达式更快?

不确定标题是否是正确的术语。

如果您必须比较 2 个字符串 (A,B) 中的字符并计算 B 中字符与 A 的匹配次数:

sum([ch in A for ch in B])
Run Code Online (Sandbox Code Playgroud)

在 %timeit 上比

sum(ch in A for ch in B)
Run Code Online (Sandbox Code Playgroud)

我知道第一个将创建一个 bool 列表,然后对 1 的值求和。第二个是生成器。我不清楚它在内部做什么以及为什么它变慢了?

谢谢。

使用 %timeit 结果进行编辑:

10 个字符

生成器表达式

列表

10000 个循环,最好的 3 个:每个循环 112 µs

10000 个循环,最好的 3 个:每个循环 94.6 µs

1000 个字符

生成器表达式

列表

100 个循环,最好的 3 个:每个循环 8.5 毫秒

100 个循环,最好的 3 个:每个循环 6.9 毫秒

10,000 个字符

生成器表达式

列表

10 个循环,最好的 3 个:每个循环 87.5 毫秒

10 个循环,最好的 …

python python-3.x

12
推荐指数
1
解决办法
823
查看次数

标签 统计

python ×1

python-3.x ×1