Разделяйте список на отдельные элементы в списке в Python - PullRequest
0 голосов
/ 23 марта 2012

В данный момент у меня есть код, который берет строку из файла .txt, а затем превращает ее в список с удалением пробела.

Выглядит так:

fd = open(filename,'rU')
chars = []
for line in fd:
    chars.append(line.strip())

return chars

Вывод выглядит следующим образом:

['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', '']

Что я хочу сделать здесь, так это превратить результат в следующий вид:

[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H',  'T',] etc...]

Я хочу разделить их на отдельные элементы,но также держите их в своих первоначальных списках.

Ответы [ 5 ]

4 голосов
/ 23 марта 2012

Я не знаю, почему вы хотите это сделать, так как вы можете делать практически все, что вы можете делать с list с str - кроме как изменить его.

Если у вас есть веская причина, вы, вероятно, захотите изменить свой цикл на

for line in fd:
    chars.append(list(line.strip()))

или после цикла,

chars = map(list, chars)

Сделаем это. Он будет запускаться list для каждого элемента в chars.

В Python 2 результат будет list.

На Python 3 вам нужно будет сделать

chars = list(map(list, chars))

или

chars = [list(sublist) for sublist in chars]

если вы хотите вернуть его в список-о-списки.

1 голос
/ 23 марта 2012
 a = ['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', '']
>>> 
>>> b = [list(x) for x in a]
>>> b
[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H', 'T'], ['H', 'H', 'T', 'H', 'T'], ['H', 'H', 'H', 'H', 'H'], ['T', 'H', 'T', 'H', 'T'], []]
>>> 
0 голосов
/ 23 марта 2012

Если вы хотите один вкладыш

map(list, list(open('test.py')))

или

[list(a) for a in list( open('fileName.txt', 'rU') )]

, но лучше всего это сделать в две строки, например

fileHandler = open('file.txt')
fileData = map(list, list(fileHandler))
0 голосов
/ 23 марта 2012
>>> data = ['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', '']
>>> map(list, data)
[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H', 'T'], ['H', 'H', 'T', 'H', 'T'], ['H', 'H', 'H', 'H', 'H'], ['T', 'H', 'T', 'H', 'T'], []]
0 голосов
/ 23 марта 2012

Следующее понимание списка Python решит вашу проблему:

lVals = [list(x.strip()) for x in open(filename,'rU').readlines()]
...