Ответ 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']
Мне нужно взять большой список слов в форме:
['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())
>>> 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']
понимание списка?
[x.strip() for x in lst]
Вы можете использовать списки понятий:
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)
Это можно сделать, используя списки, как определено в PEP 202
[w.strip() for w in ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']]
Все остальные ответы, и в основном о понимании списков, отличные. Но просто для объяснения вашей ошибки:
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
, поместите это в функцию и сделайте то же самое. Это самый читаемый способ работы со списками.