Python заменяет пустые строки в списке строк, используя понимание списка

#python-3.x #replace

#python-3.x #заменить

Вопрос:

У меня есть список, подобный этому

 test1 = ['a', 'b', 'c', '', 'd']
  

и я ожидаю заменить «на «hello»

 test2 = [w.replace('', 'test') for w in test1 ]
  

вывод: ['a', 'b', 'c', '', 'd']

Итак, как использовать понимание списка, чтобы сделать это?

Комментарии:

1. Добро пожаловать в SO! Я не совсем понимаю, что вы пытаетесь здесь сделать, и мой вывод не совпадает с вашим. Я вижу, ['testatest', 'testbtest', 'testctest', 'test', 'testdtest'] а не ['a', 'b', 'c', '', 'd'] как указано в вашем сообщении. Можете ли вы уточнить свои намерения?

2. О, вы правы, если я запущу test2 = [w.replace(«, ‘test’) для w в test1], вывод точно такой, как вы видите, я ожидаю заменить «на «test», вы знаете, как это сделать? 🙂

Ответ №1:

понимание списка было бы:

 [t if t is not '' else 'hello' for t in test1]
  

Ответ №2:

 test1 = ['a', 'b', 'c', '', 'd']
for n in range(len(test1)):
  if not test1[n]:
    test1[n] = 'hello'
  

Пустая строка имеет значение false, вы также можете использовать test1[n] == ''

Ответ №3:

что-то вроде:

 x = ['a', 'b', 'c', '', 'd']

['hello' if s=='' else s for s in x]

['a', 'b', 'c', 'hello', 'd']