7

次のリストをどのように変えることができますか

['1','2','A,B,C,D','7','8']

の中へ

['1','2','A','B','C','D','7','8']

最もpythonicな方法で?

ネストされたリストを作成し、次にお世辞を作成する非常に非Python的なコードがあります。

sum ( [ word.split(',') for word in words ], [] )
4

3 に答える 3

19
result = [item for word in words for item in word.split(',')]
于 2012-10-09T21:09:22.230 に答える
3
In [1]: from itertools import chain

In [2]: lis=['1','2','A,B,C,D','7','8']


In [5]: list(chain(*(x.split(',') for x in lis)))
Out[5]: ['1', '2', 'A', 'B', 'C', 'D', '7', '8']

不要な呼び出しをさらに減らすにsplit()は:

In [7]: list(chain(*(x.split(',') if ',' in x else x for x in lis)))
Out[7]: ['1', '2', 'A', 'B', 'C', 'D', '7', '8']

使用map():

In [8]: list(chain(*map(lambda x:x.split(','),lis)))
Out[8]: ['1', '2', 'A', 'B', 'C', 'D', '7', '8']

In [9]: list(chain(*map(lambda x:x.split(',') if ',' in x else x,lis)))
Out[9]: ['1', '2', 'A', 'B', 'C', 'D', '7', '8']
于 2012-10-09T21:07:52.620 に答える
0
      k=k=['1','2','A,B,C,D','7','8']
      m=[i for v in k for i in v if i!=","]
于 2012-11-08T17:27:19.760 に答える