5

通常、リストのリストをリストに変更するには、内包表記を使用します。ただし、最終的なリストを別のリストに圧縮し、順位を維持する必要があるため、空のリストを失いたくありません。

私は次のようなものを持っています

list_of_lists = [['a'],['b'],[],['c'],[],[],['d']]そして私はこれを使います

[x for sublist in list_of_lists for x in sublist] それは私に与えます

['a','b','c','d'] しかし、私が欲しいのは

['a','b','','c','','','d']

これがばかげた質問である場合は申し訳ありませんが、私はpythonが初めてです。

助けてくれてありがとう!

4

4 に答える 4

5

['']空のサブリストが表示されたときに、空のリストの代わりに選択するだけです。

list_of_lists = [['a'],['b'], [], ['c'], [], [], ['d']]
[x for sublist in list_of_lists for x in sublist or ['']]

一部のサブリストを特別に扱うためのより複雑な基準がある場合は、次を使用できます... if ... else ...

[x for sublist in list_of_lists for x in (sublist if len(sublist)%2==1 else [42])]

Ps 原文に引用符がないのは見落としだと思います。

于 2013-08-02T16:56:24.827 に答える
5

文字列'a''b'などから始めていますか? その場合は、とに''.join変換するため['a']に使用できます。'a'[]''

[''.join(l) for l in list_of_lists]
于 2013-08-02T16:55:17.277 に答える
1

何かのようなもの:

a = b = c = d = 3    
lol = [[a],[b],[],[c],[],[],[d]]

from itertools import chain
print list(chain.from_iterable(el or [[]] for el in lol))
# [3, 3, [], 3, [], [], 3]
于 2013-08-02T16:59:13.010 に答える