Само понимание списка можно напрямую перевести на следующее:
_result = []
for string in x:
_result.append(''.join(char for char in string if char not in punctuation))
x = _result
del _result
Конечно, промежуточных переменных нет _result
. Вы используете выражение генератора внутри понимания списка, которое само по себе похоже на понимание списка, за исключением того, что оно создает генератор. Итак, что-то вроде:
def _g():
for char in string:
if char not in punctuation:
yield char
Собираем все вместе:
_result = []
for string in x:
def _g():
for char in string:
if char not in punctuation:
yield char
_result.append(''.join(_g()))
del _g
x = _result
del _result
Но опять же, промежуточные переменные _result
и _g
фактически не создаются.