不确定标题是否是正确的术语。
如果您必须比较 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 个循环,最好的 …