Удалить все гласные из строки, используя список-понимание - PullRequest
2 голосов
/ 11 февраля 2020

Я пытаюсь решить задачу на Codewars.

Тролли атакуют ваш раздел комментариев!

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

Ваша задача - написать функцию, которая принимает строку и возвращает новую строку со всеми удаленными гласными.

Например, строка " Этот сайт для неудачников LOL! станет "Ths wbst s fr lsrs LL!".

Примечание: для этого ката y не считается гласным.

Но я хочу сделать это в одной строке с пониманием списка. Я попробовал это:

return "".join([[].extend(char) for char in string if char not in "aeiouAEIOU"])

... но я получаю

TypeError: sequence item 0: expected str instance, NoneType found

1 Ответ

4 голосов
/ 11 февраля 2020

Вы пытаетесь составить список в своем списке-понимании; Вы можете просто использовать существующий список:

return "".join([char for char in x if char not in "aeiouAEIOU"])

Обратите внимание, что мы могли бы даже опустить понимание списка и просто использовать выражение генератора (опуская квадратные скобки), но join() работает внутренне, преобразовывая последовательность в любом случае к списку, так что в этом случае использование понимания списка на самом деле быстрее.

...