簡體   English   中英

在python中對0和1進行分組

[英]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的結果進行分組。 因此,如果bool0上被調用,它將給出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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM