私たちは、その後、[私たちは3の後に4次々と他の、それに2つのコンマを追加しますので、我々は数字のトリプルを生成し、数列149832567する[14,983,2567]のように1つのリストを取ることができます14,983,2567]。
したがって、生成できる数字シーケンスの数はいくつですか?
In [1]: import itertools
In [2]: a = range(1,10)
In [3]: a
Out[3]: [1, 2, 3, 4, 5, 6, 7, 8, 9]
In [4]: len(list(itertools.permutations(a,9)))
Out[4]: 362880
我々は?コンビネーションに生成することができますどのように多くのトリプル番号437865192、のような数列を取得すると
8 * 7月2日= 28
(9つの数字の間に2つのギャップを選ぶ)または使用するitertools.combinations
In [8]: len(list(itertools.combinations(list(range(8)),2)))
Out[8]: 28
シーケンスを指定すると、28個の組み合わせが得られます。
In [1]: a = ['2','3','6','4','9','1','7','8','5']
In [2]: import itertools
In [4]: for i in itertools.combinations(range(1,9),2):
...: print [int(''.join(a[:i[0]])), int(''.join(a[i[0]:i[1]])), int(''.join(a[i[1]:]))]
[2, 3, 6491785]
[2, 36, 491785]
[2, 364, 91785]
[2, 3649, 1785]
[2, 36491, 785]
[2, 364917, 85]
[2, 3649178, 5]
[23, 6, 491785]
[23, 64, 91785]
[23, 649, 1785]
[23, 6491, 785]
[23, 64917, 85]
[23, 649178, 5]
[236, 4, 91785]
[236, 49, 1785]
[236, 491, 785]
[236, 4917, 85]
[236, 49178, 5]
[2364, 9, 1785]
[2364, 91, 785]
[2364, 917, 85]
[2364, 9178, 5]
[23649, 1, 785]
[23649, 17, 85]
[23649, 178, 5]
[236491, 7, 85]
[236491, 78, 5]
[2364917, 8, 5]
ように生成されます10160640(362880 * 28)のリストがあります。
FINAL CODE:
In [15]: a=map(lambda x:str(x), range(1,10))
In [16]: a
Out[16]: ['1', '2', '3', '4', '5', '6', '7', '8', '9']
In [17]: result = []
In [18]: for seq in itertools.permutations(a,9):
...: for i in itertools.combinations(range(1,9),2):
...: result.append([int(''.join(seq[:i[0]])), int(''.join(seq[i[0]:i[1]])), int(''.join(seq[i[1]:]))])
...:
In [19]: len(result)
Out[19]: 10160640
が注文の問題をしていますか? '[14、983、7256]は' [983、14、7256] 'とは区別されますか? –
はい。結局、注文は重要です。しかし、もし私がすべてのトリプルを持っていれば、私はそれを後ですることができます。しかし、あなたがトリプルを生成している間にそれを行うことができれば、それはさらに良いでしょう。 – sebastian