Is there a more idiomatic way to sum string lengths in Python than by using a loop?
length = 0
for string in strings:
length += len(string)
I tried sum()
, but it only works for integers:
>>> sum('abc', 'de')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sum() can't sum strings [use ''.join(seq) instead]
length = sum(len(s) for s in strings)
My first way to do it would be sum(map(len, strings))
. Another way is to use a list comprehension or generator expression as the other answers have posted.
I know this is an old question, but I can't help noting that the Python error message tells you how to do this:
TypeError: sum() can't sum strings [use ''.join(seq) instead]
So:
>>> strings = ['abc', 'de']
>>> print len(''.join(strings))
5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With