ゼロ以外の整数のリストがあり、リストをネストされたリスト(=グループ)に変更したいのですが、各グループには、同じ符号を持つリストの連続する整数が含まれています。
私は次のコードでこれを行いました:
a = [1, 2, 3, -4, -5, -6, 7, 8, -9, 10, -11, 12]
groups = [[]]
for (i, x) in enumerate(a):
if x ^ a[i - 1] < 0:
groups.append([x])
else:
groups[-1].append(x)
さて、私の質問は、これを行うためのより速い方法があるということです。または、最速の方法は何ですか?
itertools.groupbyがあなたが探しているもののようです。
import itertools
a = [1, 2, 3, -4, -5, -6, 7, 8, -9, 10, -11, 12]
c = [list(group) for key,group in itertools.groupby(a, lambda x: x>0)]
print(c)
出力:
[[1, 2, 3], [-4, -5, -6], [7, 8], [-9], [10], [-11], [12]]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加