我想知道如何将嵌套列表中的单词拆分成单独的字母,这样
[['ANTT'], ['XSOB']]
变成
[['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
我想知道如何将嵌套列表中的单词拆分成单独的字母,这样
[['ANTT'], ['XSOB']]
变成
[['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
使用列表推导:
[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']]
你可以给你一个功能性的方法(我仍然更喜欢 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']]
>>> map(lambda s: map(list, s)[0], [['ANTT'],['XSOB']])
[['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
到目前为止给出的所有答案都包括一个 - 有点可疑 -0
字面意思。乍一看,这似乎是一种人为的添加剂,因为原始任务不包含任何整数文字。
但是输入当然具有一些特殊属性,而不仅仅是一个列表。它是一个列表列表,其中只有一个字符串文字。换句话说,一个单独装箱的对象(字符串)的包。如果我们重新表述原始问题和接受的答案[x]
,我们可以使和之间的关系[0]
更加明显:
package = [['ANTT'], ['XSOB']]
result = [list(box[0]) for box in package] # 0 indicates first (and only) element in the box