Python – понимание слов для слов, которые состоят не только из цифр

На высоком уровне я пытаюсь выполнить следующее:

given a list of words, return all the words that do not consist solely of digits 

Моя первая мысль о том, как это сделать:

 import string result = [] for word in words: for each_char in word: if each_char not in string.digit: result.append(word) break return result 

Это прекрасно работает. Чтобы быть более Pythonic, я подумал – перечислить понимание, не так ли? Так:

 return [word for word in words for char in word if not char in string.digits] 

К сожалению, это добавляет копию word к результату для каждого символа, который не является цифрой. Так что для f(['foo']) я получаю ['foo', 'foo', 'foo'] .

Есть ли умный способ сделать то, что я пытаюсь сделать? Мое текущее решение состоит в том, чтобы просто написать функцию is_all_digits и сказать [word for word in words if not is_all_digits(word)] . Мое общее понимание заключается в том, что понимание списков допускает декларативную работу такого рода, а вспомогательная функция для меня достаточно декларативная; просто любопытно, есть ли какой-нибудь умный способ сделать это одним составным заявлением.

Благодаря!

2 Solutions collect form web for “Python – понимание слов для слов, которые состоят не только из цифр”

Почему бы просто не проверить всю строку для isdigit() :

 >>> words = ['foo', '123', 'foo123'] >>> [word for word in words if not word.isdigit()] ['foo', 'foo123'] 

Или, поверните логику другим способом и используйте any() :

 >>> [word for word in words if any(not char.isdigit() for char in word)] ['foo', 'foo123'] 

any() остановил бы на первом нецифровом символе для слова и вернул True .

 filter(lambda _: not _.isdigit(), iterable) 

Пример:

 >>> list(filter(lambda _: not _.isdigit(), ["hello", "good1", "1234"])) ['hello', 'good1'] 
  • Как математически вычитать элементы в двух списках на Python и выводить только те элементы, которые соответствуют условию?
  • Как получить значение индекса для понимания списка?
  • Подсчет положительных элементов в списке с использованием списков Python
  • если еще в понимании списка
  • Понимание списка Python с уникальными элементами
  • Используя понимание списков в Python, чтобы сделать что-то похожее на zip ()?
  • Массивное понимание в JavaScript?
  • список вызовов функции, использующей понимание списка
  • Python - лучший язык программирования в мире.