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 - In и Not In List
  • Подсчет положительных элементов в списке с использованием списков Python
  • Элементы sum в списке python только в том случае, если элементы в отдельном булевом списке True
  • Автоматическое упрощение / рефакторинг кода Python (например, для циклов -> понимание списка)?
  • Как получить значение индекса для понимания списка?
  • Самый эффективный способ Python выбрать самую длинную строку в списке?
  • Транспонирование матрицы в Python
  •  
    Interesting Posts for Van-Lav

    Как я могу обучать алгоритм генетического программирования на переменную последовательность дескрипторов?

    Python – создание текстового файла с переменной как имя

    Функция переопределения множественного наследования Python и ListView в django

    PyQt и QSignalMapper / lambdas – несколько сигналов, один слот

    скрытая строка, которая является списком в правильный список python

    Определение алфавита на любую буквенную строку для последующего использования, чтобы проверить, имеет ли слово определенное количество символов

    Объект «module» не имеет атрибута «Gridspec», несмотря на вызов справки (gridspec), показывающий класс Gridspec

    использование cx_freeze в флеш-приложении

    Python + OpenCV + py2app: numpy.core.multiarray не удалось импортировать

    Блоки кода в python

    Как использовать autodoc Sphinx для документирования метода __init __ (self) класса?

    socket.error: Адрес уже используется

    Django: перезапуск веб-сервера, чтобы изменения в исходном коде были применены

    Работа с огромными (возможно более 30000×30000) изображениями в Python?

    Как расширить класс DateFieldListFilter от admin в Django?

    Python - лучший язык программирования в мире.