[英]Grouping 0s and 1s in python
我有一個像[0,0,0,1,1,1,0,0,0,1,1]
這樣的零和一個數組。 如何編寫程序將相鄰的 0 和 1 保存在不同的數組中。
例如[0,0,0,1,1,1,0,0,0,1,1]
給出[0,0,0],[1,1,1],[0,0,0],[1,1]
。
你可以用itertools.groupby
它們分組,就像這樣
>>> data = [0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1]
>>> from itertools import groupby
>>> [list(group) for item, group in groupby(data)]
[[0, 0, 0], [1, 1, 1], [0, 0, 0], [1, 1]]
groupby
的結果將是一個實際項目的元組和一個提供分組項目的迭代器。 我們只是將分組的項目轉換為列表,使用list(group)
。
根據評論,
>>> data = [1, 2, 1, 3, 4, 5, 6, 7, 1, 2, 3]
>>> flag = [0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1]
創建一個生成器,它將使值相乘,
>>> gen = (d * v for d, v in zip(data, flag))
現在,根據對每個數字調用bool
的結果進行分組。 因此,如果bool
在0
上被調用,它將給出False
,否則為True
。
>>> [list(g) for _, g in groupby(gen, key=bool)]
[[0, 0, 0], [3, 4, 5], [0, 0, 0], [2, 3]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.