のは、私は、リストまたは型の配列があるとしましょう:可能なすべての順列で、リスト内のアイテムを交換
mylist = [1, 2, 3, 4]
をそして、私はこのリスト内の項目を交換したいです。通常、私は次のようなものを使用します:
mylist[2] = 7
これはうまくいきます。しかし、mylist
の1つ以上のアイテムを交換するときに、mylist
のすべての可能な順列を作成する方法を説明できる人がいますか?例えば、私は次のように作成したい:
[7, 2, 3, 4]
[7, 7, 3, 4]
[7, 2, 7, 4]
[7, 7, 7, 4]
[7, 2, 3, 7]
...(and so on)
私はすべての可能な順列を生成するitertools
を使用することができます知っているが、どのように私は私が生成する前に、リスト内のすべての可能な場所にアイテムを代用するように指定することができます順列?ここで私はitertools
を使用しようとした方法である:
list(itertools.permutations([1,2,3,4,7], 4))
それは順列に1回よりも7
以上を代用しない、それはまた、数7
を含まない順列を生成するので、これは動作しません。
あなたの例では、置き換えられていないアイテムをそのまま残して、リストの少なくとも1つのアイテムを値(例では「7」)で置き換えたいとしているようです。それはあなたが意味することですか?あなたの例では結果に15のリストがありますか? –
いくつかの結果リストに2〜3つのセブンがどのように得られるのか分かりません。 – timgeb
この質問は説明するのは難しいことでした。私はすべての可能な場所で代用することを考えているので、順列のリストが生成されます。私はitertools.permutationsを使ってこれを解決することに集中していたので、この方法で説明しようとしました。おそらくそれは正しい言葉ではありませんでした。 – Alligator