В настоящий момент нет ничего плохого в том, как вы это делаете сейчас. Просто хочу указать на это. Если вы просто пытаетесь сделать это в одной строке, возможно, this решение - это то, что вы ищете.
Но чтобы ответить на ваш вопрос Понимание:
У вас есть две проблемы здесь происходит, что я хотел бы отметить.
Вы не должны проверить, если у вас есть цифры в строке, пытаясь привести его к str
. Просто используйте isdigit против персонажа, которого вы проверяете.
Вы не можете использовать понимание так, как вы его пытаетесь использовать. То, что вы должны понимать в понимании, заключается в том, что вы создаете новый список и берете этот новый список и назначаете его переменной (в вашем случае count
). Так как это сделать:
Количество = [число + 1 ....]
Действительно не имеет особого смысла делать.
Что вы должны делать вместо этого, если вы хотите сделать это в понимании,
перебирать каждый символ в a
, для каждого символа, проверьте, если это цифра:
[c.isdigit() for c in a]
сейчас , с этой частью выше. У вас будет список из 1s для всех цифр вашего слова. Следующий шаг - sum
все вместе. Теперь, дополнительный бит информации, на которую нужно обратить внимание, заключается в том, что при вызове sum
мы будем потерять квадратные скобки, потому что вместо этого мы будем использовать то, что называется generator expression.
Итак, со всем этим сказано и сделано. Ваше окончательное решение:
a = "fjf7jjjf77773jf3j"
print(sum(c.isdigit() for c in a))
# outputs 7
Что вы хотите сделать с пониманием? В первом случае 'count' является' int'. Во втором 'count' будет' list'. Они не то же самое, поэтому неясно, что вы хотите делать. – SethMMorton
[Синтаксис синтаксиса списка] (http://python-3-patterns-idioms-test.readthedocs.org/en/latest/Comprehensions.html). Что вы на самом деле пытаетесь сделать? – Kupiakos
В первом примере вы увеличиваете 'count', который является целым числом, но во втором примере вы пытаетесь вернуть' count', который является списком. Почему вы хотите использовать список над целым числом? – Shrey