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 に答える