Not sure if title is correct terminology.
If you have to compare the characters in 2 strings (A,B) and count the number of matches of chars in B against A:
sum([ch in A for ch in B])
is faster on %timeit than
sum(ch in A for ch in B)
I understand that the first one will create a list of bool, and then sum the values of 1. The second one is a generator. I'm not clear on what it is doing internally and why it is slower?
Thanks.
Edit with %timeit results:
10 characters
generator expression
list
10000 loops, best of 3: 112 µs per loop
10000 loops, best of 3: 94.6 µs per loop
1000 characters
generator expression
list
100 loops, best of 3: 8.5 ms per loop
100 loops, best of 3: 6.9 ms per loop
10,000 characters
generator expression
list
10 loops, best of 3: 87.5 ms per loop
10 loops, best of 3: 76.1 ms per loop
100,000 characters
generator expression
list
1 loop, best of 3: 908 ms per loop
1 loop, best of 3: 840 ms per loop