私は次のようなデータを持っています
[2, 2, 2, 2, 2, 3, 13, 113]
次に、自分で生成したキーで個別のリストに並べ替えたいと思います。実際、可能なすべてのリストを生成したいと考えています。
いくつかの例:
values: [2, 2, 2, 2, 2, 3, 13, 113]
keys: [0, 0, 1, 2, 1, 3, 3, 1]
sublists: [2, 2], [2, 2, 113], [2], [3, 13]
values: [2, 2, 2, 2, 2, 3, 13, 113]
keys: [0, 1, 0, 0, 0, 1, 1, 0]
sublists: [2, 2, 2, 2, 113], [2, 3, 13]
values: [2, 2, 2, 2, 2, 3, 13, 113]
keys: [2, 3, 0, 0, 4, 4, 1, 3]
sublists: [2, 2], [13], [2], [2, 113], [2, 3]
すべての可能なキーは、によって生成されます
def generate_keys(prime_factors):
key_size = len(prime_factors) - 1
key_values = [str(i) for i in range(key_size)]
return list(itertools.combinations_with_replacement(key_values, \
len(prime_factors)))
次に、キーを使用して値をサブリストにシフトできると考えました。それが私が立ち往生している部分です。私は itertools.groupby が私の解決策になると思っていましたが、さらに調査すると、カスタムリストを groupby のキーとして使用する方法がわかりません。
これらのキーを使用して、大きなリストを小さなサブリストに分割するにはどうすればよいですか? キーを使用せずにこれを行う方法さえあるかもしれません。いずれにせよ、私はそれを行う方法がわかりません.他のスタックオーバーフローの質問を見ると、球場にエベンがありますが、正確にはこの質問ではありません.