私は、次のことを行うためのより「Pythonic」な方法、またはより単純な方法を探しています。
lista = [2,4,6,8,3,4,6,2,1,4,23]
splitby = [2,4,2,3]
期待される出力、splitbyによるlistaの要素のグループ化:
grouped = [[2,4],[6,8,3,4],[6,2],[1,4,23]]
sum(splitby)は常に= len(lista)になります
これが私が思いついたものです:
grouped = [[] for _ in xrange(len(splitby))]
for x in range(len(splitby)):
for z in range(splitby[x]):
grouped[x].append(lista[z + sum(splitby[0:x])])
>>> print grouped
[[2, 4], [6, 8, 3, 4], [6, 2], [1, 4, 23]]
groupby
たとえば、を使用してこれを行う簡単な方法はありますか?
itertoolsを使うと思います...
from itertools import islice
ilista = iter(lista)
groups = [list(islice(ilista, 0, n)) for n in splitby]
そして、それが実際に機能することを自分自身に納得させるために...ここでそれは実際に動作しています:
>>> from itertools import islice
>>> lista = [2,4,6,8,3,4,6,2,1,4,23]
>>> splitby = [2,4,2,3]
>>> ilista = iter(lista)
>>> groups = [list(islice(ilista, 0, n)) for n in splitby]
>>> print(groups)
[[2, 4], [6, 8, 3, 4], [6, 2], [1, 4, 23]]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加