【问题标题】:Separate list into single elements within list in Python在Python中将列表分成列表中的单个元素
【发布时间】:2012-03-23 03:17:19
【问题描述】:

我现在有一个代码,它从 .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...]

我想将它们分成单个元素,但也将它们保留在原始列表中。

【问题讨论】:

  • 您打算如何处理子列表?你知道你可以迭代字符串,并索引到它们,同样的方式,是吗?您只是无法就地修改它们。

标签: python list character


【解决方案1】:

我不知道你为什么要这样做,因为你几乎可以用liststr 做任何你能做的事情——除了改变它。

假设您有充分的理由,您可能希望将循环更改为

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

或者在循环之后,

chars = map(list, chars)

会做的。它将在chars 中的每个项目上运行list

在 Python 2 上,它会从结果中生成 list

在 Python 3 上,您需要这样做

chars = list(map(list, chars))

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

如果您希望将其作为 list-o-lists 恢复。

【讨论】:

  • 将这一切组合成一行:with open(filename, 'fU') as f: return [list(line.strip()) for line in f]。或者,如果你想依靠引用计数来关闭你的文件,lambda filename: [list(l.strip()) for l in open(filename, 'fU')]
【解决方案2】:
 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'], []]
>>> 

【讨论】:

    【解决方案3】:
    >>> 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】:

      如果你想要一个班轮

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多