0

次のリストがあるとしましょう。

lst = [0,1,3,a,b,c]

最終的な結果を のすべての可能な順列にしたいと思いますがlst、長さは 20 文字です。

私が調べたところ、長さが 6 以下になる最終結果を作成する例しか見つかりませんでした。

何か案は?

4

4 に答える 4

3

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))
于 2013-01-20T04:24:28.003 に答える
0

よろしいですall permutationsか?6 ^ 20の長さのリストになる文字(順列ではない)を再利用したいとします。

そのリスト内の文字から長さ20の1つの文字列を作成する場合は、次のようにする必要があります。

from random import choice
''.join(choice(chars) for _ in range(length))
于 2013-01-20T04:21:22.700 に答える
0

問題は、順列と組み合わせ (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)
于 2013-01-20T04:32:55.263 に答える
0

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))]
于 2013-01-20T04:42:25.520 に答える