Python: длина строк строки
Есть ли более идиоматический способ суммирования строк в Python, чем с помощью цикла?
length = 0
for string in strings:
length += len(string)
Я пробовал sum()
, но он работает только для целых чисел:
>>> sum('abc', 'de')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sum() can't sum strings [use ''.join(seq) instead]
Ответы
Ответ 1
Я знаю, что это старый вопрос, но я не могу не отметить, что сообщение об ошибке Python сообщает вам, как это сделать:
TypeError: sum() can't sum strings [use ''.join(seq) instead]
Итак:
>>> strings = ['abc', 'de']
>>> print len(''.join(strings))
5
Ответ 2
length = sum(len(s) for s in strings)
Ответ 3
Мой первый способ сделать это будет sum(map(len, strings))
. Другой способ - использовать выражение для составления списка или выражение генератора, как опубликовали другие ответы.
Ответ 4
Самый короткий и быстрый способ - применить map() и sum():
>>> data = ['a', 'bc', 'def', 'ghij']
>>> sum(map(len, data))
10
В Python 2 используйте itertools.imap вместо карты для лучшей производительности памяти:
>>> from itertools import imap
>>> data = ['a', 'bc', 'def', 'ghij']
>>> sum(imap(len, data))
10
Ответ 5
print(sum(len(mystr) for mystr in strings))
Ответ 6
Здесь другой способ использования оператора. Не уверен, что это легче читать, чем принятый ответ.
import operator
length = reduce(operator.add, map(len, strings))
print length
Ответ 7
Просто добавьте...
Добавление чисел из списка, сохраненного в виде строки
nos = ['1', '14', '34']
length = sum (int (s) для s в nos)