2017-01-15 3 views
0

たとえば、与えられた文字と長さに基づいて並べ替えのリストを生成するにはどうすればよいですか?

私は並べ替えを生成したい文字のリストを持っています。 ['*'、 '+']と、パーミュテーションをオフにしたい長さ。つまり、提供されたリストのすべての組み合わせを指定された長さまで探したいと思います。 generatePermutationsの呼び出しは次のようになります。

返す必要があり
generatePermutations(['*', '+'], 2) 

*, * 
*, + 
+, * 
+, + 

別の例は次のようになります。

generatePermutations(['*', '+'], 3) 
*, *, * 
*, *, + 
*, +, + 
*, +, * 
+, *, + 
+, *, * 
+, +, * 
+, +, + 

は、どのように私はこれを行うに行きますか?

+1

は、どのようにそれをやってしまいましたか?何が起こった? – jonrsharpe

+1

'itertools'から' product() 'を見てください。 – tarashypka

答えて

2

itertool.productを使用してください。あなたが求めているのはcartesian productです。

>>> list(itertools.product(['*', '+'], repeat=2)) 
[('*', '*'), ('*', '+'), ('+', '*'), ('+', '+')] 
>>> list(itertools.product(['*', '+'], repeat=3)) 
[('*', '*', '*'), ('*', '*', '+'), ('*', '+', '*'), ('*', '+', '+'), ('+', '*', '*'), ('+', '*', '+'), ('+', '+', '*'), ('+', '+', '+')] 
+0

これはまさに私が探していたものです。何らかの理由で、API上で私に飛び乗ることはありませんでした。ありがとう! – Beardo

関連する問題