Разделите все элементы строкового списка

Мне нужно взять большой список слов в форме:

['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']

а затем используя функцию полосы, превратите ее в:

['this', 'is', 'a', 'list', 'of', 'words']

Я думал, что то, что я написал, будет работать, но я продолжаю ошибаться, говоря:

Объект

"'list не имеет атрибута' strip '"

Вот код, который я пробовал:

strip_list = []
for lengths in range(1,20):
    strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
    strip_list.append(lines[a].strip())

Ответ 1

>>> my_list = ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
>>> map(str.strip, my_list)
['this', 'is', 'a', 'list', 'of', 'words']

Ответ 2

понимание списка? [x.strip() for x in lst]

Ответ 3

Вы можете использовать списки понятий:

strip_list = [item.strip() for item in lines]

Или функция map:

# with a lambda
strip_list = map(lambda it: it.strip(), lines)

# without a lambda
strip_list = map(str.strip, lines)

Ответ 4

Это можно сделать, используя списки, как определено в PEP 202

[w.strip() for w in  ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']]

Ответ 5

Все остальные ответы, и в основном о понимании списков, отличные. Но просто для объяснения вашей ошибки:

strip_list = []
for lengths in range(1,20):
    strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
    strip_list.append(lines[a].strip())

a является членом вашего списка, а не индексом. Вы можете написать следующее:

[...]
for a in lines:
    strip_list.append(a.strip())

Еще один важный комментарий: вы можете создать пустой список следующим образом:

strip_list = [0] * 20

Но это не так полезно, поскольку .append добавляет материал в ваш список. В вашем случае нецелесообразно создавать список с значениями defaut, поскольку вы будете создавать его для каждого элемента при добавлении разделенных строк.

Итак, ваш код должен выглядеть следующим образом:

strip_list = []
for a in lines:
    strip_list.append(a.strip())

Но, конечно же, лучший из них - это одно и то же:

stripped = [line.strip() for line in lines]

Если у вас есть что-то более сложное, чем просто .strip, поместите это в функцию и сделайте то же самое. Это самый читаемый способ работы со списками.