5

我想知道如何将嵌套列表中的单词拆分成单独的字母,这样

[['ANTT'], ['XSOB']]

变成

[['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
4

4 回答 4

10

使用列表推导:

[list(l[0]) for l in mylist]

您的输入列表仅包含嵌套列表,每个列表有 1 个元素,因此我们需要l[0]在每个元素上使用。list()在字符串上创建单个字符的列表:

>>> mylist = [['ANTT'], ['XSOB']]
>>> [list(l[0]) for l in mylist]
[['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]

如果您曾经修复您的代码以生成一个直接向上的字符串列表(因此没有单元素嵌套列表),您只需要删除[0]

>>> mylist = ['ANTT', 'XSOB']
>>> [list(l) for l in mylist]
[['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
于 2012-10-31T09:26:26.660 回答
2

你可以给你一个功能性的方法(我仍然更喜欢 Martijn Pieters 的回答中的列表理解):

>>> from operator import itemgetter
>>> delisted = map(itemgetter(0),[['ANTT'],['XSOB']])  # -> ['ANTT', 'XSOB']
>>> splited = map(list,delisted)  # -> [['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]

或者,作为单行者:

>>> map(list,map(itemgetter(0),[['ANTT'],['XSOB']]))
[['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
于 2012-10-31T09:40:15.323 回答
1
>>> map(lambda s: map(list, s)[0], [['ANTT'],['XSOB']])
[['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
于 2012-10-31T09:30:30.647 回答
0

到目前为止给出的所有答案都包括一个 - 有点可疑 -0字面意思。乍一看,这似乎是一种人为的添加剂,因为原始任务不包含任何整数文字。

但是输入当然具有一些特殊属性,而不仅仅是一个列表。它是一个列表列表,其中只有一个字符串文字。换句话说,一个单独装箱的对象(字符串)的包。如果我们重新表述原始问题和接受的答案[x],我们可以使和之间的关系[0]更加明显:

package = [['ANTT'], ['XSOB']]
result = [list(box[0]) for box in package]   # 0 indicates first (and only) element in the box
于 2019-10-10T09:17:58.373 回答