は、このコードを試してみて:あなたの例ではリストindices
とvalues
の長さが異なること
from itertools import groupby
from operator import itemgetter
indices = [1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5]
values = [3, 14, 6, 13, 15, 3, 7, 18, 4, 12, 17, 2, 9]
pairs = zip(indices, values)
sequences = [[v for (i, v) in group] for (_, group) in groupby(pairs, itemgetter(0))]
min_char_vals = [min(seq) for seq in sequences for _ in seq]
お知らせ。この問題を解決するためにアイテムをindices
に追加しました。あなたの質問の後半部分については
In [232]: pairs
Out[232]:
[(1, 3),
(1, 14),
(2, 6),
(2, 13),
(2, 15),
(3, 3),
(3, 7),
(3, 18),
(4, 4),
(4, 12),
(4, 17),
(5, 2),
(5, 9)]
In [233]: sequences
Out[233]: [[3, 14], [6, 13, 15], [3, 7, 18], [4, 12, 17], [2, 9]]
In [234]: min_char_vals
Out[234]: [3, 3, 6, 6, 6, 3, 3, 3, 4, 4, 4, 2, 2]
、しきい値以下min_char_vals
の要素を保つために、あなたには、いくつかのインプレースポストを実行する必要があります。
次の対話型セッションでは、作品上記のスニペットは、方法を示していますmin_char_vals
の処理:
for i, mcv in enumerate(min_char_vals):
if mcv >= 10:
min_char_vals[i] = 0 if i == 0 else min_char_vals[i-1]
条件式をデフォルト最小特性値を割り当てることを目的としている(私は私のコードで0
を使用)の最初の要素にその値が10
以上の場合はになります。
あなたが初期化を変更する場合:
values = [3, 14, 6, 13, 15, 13, 17, 18, 4, 12, 17, 2, 9]
とあなたが説明した後処理を行い、これはあなたが得るものです:
In [280]: min_char_vals
Out[280]: [3, 3, 6, 6, 6, 6, 6, 6, 4, 4, 4, 2, 2]
*ツールを示す*はSOのために意味されるものではありません。私たちはあなたが[mcve] –