次のリストがあるとしましょう。
lst = [0,1,3,a,b,c]
最終的な結果を のすべての可能な順列にしたいと思いますがlst
、長さは 20 文字です。
私が調べたところ、長さが 6 以下になる最終結果を作成する例しか見つかりませんでした。
何か案は?
次のリストがあるとしましょう。
lst = [0,1,3,a,b,c]
最終的な結果を のすべての可能な順列にしたいと思いますがlst
、長さは 20 文字です。
私が調べたところ、長さが 6 以下になる最終結果を作成する例しか見つかりませんでした。
何か案は?
私itertools.product
はあなたが探しているものだと思います。
# A simple example
import itertools
lst = [0, 1]
print(list(itertools.product(lst, repeat=2)))
# [(0, 0), (0, 1), (1, 0), (1, 1)]
それ自体がリストではなくオブジェクトをitertools.product
返すことに注意してください。itertools.product
# In your case
import itertools
lst = [0, 1, 3, a, b, c]
output = list(itertools.product(lst, repeat=20))
よろしいですall permutations
か?6 ^ 20の長さのリストになる文字(順列ではない)を再利用したいとします。
そのリスト内の文字から長さ20の1つの文字列を作成する場合は、次のようにする必要があります。
from random import choice
''.join(choice(chars) for _ in range(length))
問題は、順列と組み合わせ (itertools を使用する場合) が、元のリストと同じかそれ以下の長さである場合にのみ、各結果が物理的に存在できるという定義に従っていることです。
有効な結果の 1 つを「013abc013abc013abc01」にすることを提案している場合は、リストを変更して 20 項目の長さにし、それらの 6 つの値で構成する必要があります。
from itertools import permutations
i = [0,1,3,'a','b','c',0,1,3,'a','b','c',0,1,3,'a','b','c',0,1]
results = []
for a in permutations(i, 20):
results.append(a)
list(permutations(lst,x))
; どこlst
で反復可能(入力リスト)でx
あり、要素の数です
例えば:
In [8]: lst = [0, 1, 3, 'a', 'b', 'c']
In [9]: from itertools import permutations
In [10]: result=[list(permutations(lst,x)) for x in range(1,len(lst))]