我在想如何将嵌套列表中的单词拆分为其各个字母,使得:
[['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']]
>>> 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(compose(list, itemgetter(0)), xs)
- georg>>> 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
for letter in sublist[0]
了。 - Phil H