2

リストを等しいチャンクに分割することは、zip(*[iter(s)]*n)イディオムを使用してきちんと行われます。それを元に戻す良い方法はありますか?

たとえば、次のコードがある場合:

>>> s = [3,4,1,2]
>>> zip(*[iter(s)]*2)
[(3, 4), (1, 2)]

出力としてfunc([(3,4),(1,2)]生成される関数はありますか?[3,4,1,2]

編集:

タイミングとその他の解決策は、以下のDominicKexelによってリンクされている質問にあります。

4

2 に答える 2

3

があるitertools.chain.from_iterable

>>> import itertools
>>> s = [(3, 4), (1, 2)]
>>> list(itertools.chain.from_iterable(s))
[3, 4, 1, 2]

ただし、ネストされたリスト内包表記を使用することもできます。

>>> s = [(3, 4), (1, 2)]
>>> [i for sub in s for i in sub]
[3, 4, 1, 2]
于 2013-03-01T10:29:24.717 に答える
0

あなたはreduceを使うことができます:

>>> import operator
>>> reduce(operator.add, [(3,4),(1,2)])
(3, 4, 1, 2)
于 2013-03-01T10:29:35.737 に答える