6

リストのリストをマージするにはどうすればよいですか?

[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]

の中へ

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

リストをマージする前に、htmlタグのように、各アイテムの最初と最後に値を追加できればさらに良いでしょう。

つまり、最終結果は次のようになります。

['<tr>A</tr>', '<tr>B</tr>', '<tr>C</tr>', '<tr>D</tr>', '<tr>E</tr>', '<tr>F</tr>', '<tr>G</tr>', '<tr>H</tr>', '<tr>I</tr>']
4

4 に答える 4

9

sum()は使用しないでください。リストへの参加には時間がかかります。

代わりに、ネストされたリスト内包表記が機能します。

>>> x = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
>>> [elem for sublist in x for elem in sublist]
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
>>> ['<tr>' + elem + '</tr>' for elem in _]

itertools.chainを使用するためのアドバイスも良かったです。

于 2011-10-25T20:36:16.650 に答える
3
import itertools

print [('<tr>%s</tr>' % x) for x in itertools.chain.from_iterable(l)]

sumを使用することもできますが、[]パラメーターを渡さなければならないので、それはちょっと醜いと思います。レイモンドが指摘するように、それも高価になるでしょう。したがって、合計は使用しないでください。

于 2011-10-25T20:30:53.383 に答える
2

リストを連結するには、次を使用できますsum

values = sum([['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']], [])

HTMLタグを追加するには、リスト内包表記を使用できます。

html_values = ['<tr>' + i + '</tr>' for i in values]
于 2011-10-25T20:29:40.290 に答える
0

使用itertools.chain

>>> import itertools
>>> list(itertools.chain(*mylist))
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

要素をHTMLでラップすることは、後で行うことができます。

>>> ['<tr>' + x + '</tr>' for x in itertools.chain(*mylist)]
['<tr>A</tr>', '<tr>B</tr>', '<tr>C</tr>', '<tr>D</tr>', '<tr>E</tr>', '<tr>F</tr>',
'<tr>G</tr>', '<tr>H</tr>', '<tr>I</tr>']

有効なHTMLを生成しようとしている場合は、文字列のコンテンツの一部をHTMLエスケープする必要がある場合もあることに注意してください。

于 2011-10-25T20:29:15.853 に答える