将列表分成Python中列表中的单个元素

时间:2012-03-23 03:17:19

标签: python list character

我现在有一个代码从.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 个答案:

答案 0 :(得分:4)

我不知道您为什么要这样做,因为您可以使用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]

如果你想把它作为list-o-lists。

答案 1 :(得分:1)

 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'], []]
>>> 

答案 2 :(得分:0)

以下Python列表理解将解决您的问题:

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

答案 3 :(得分:0)

>>> 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'], []]

答案 4 :(得分:0)

如果你想要一个班轮

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))