2017-07-29 6 views
0

私は私の分類器によって確率の順に生成された5つの垂直ストリングを持っています。クラシファイアの信頼度が非常に高い場合、私はその分類を維持したいが、低いものについては、すべての可能な垂直列のリストを作成するすべての可能な順序の間で変更したいと考えている。リストの可能なすべての注文を得る方法

aa aa aa aa aa 
ab ac aa ad ae 
aa ab af ae ag 

と私はitertoolsを試してみました

aa aa aa aa aa aa aa aa aa aa ... 
ab ac aa ad ae ae ab ac aa ad ... 
aa ab af ae ag aa ab af ae ag... 

可能命じた組み合わせの全てを取得したいと思いますが、私は右を見つけるように見えることはできません。

はので、私のデータは、このようになります。これを行うツール。誰もこれを行う方法を知っていますか?

import sys 
import os 
import itertools 
from itertools import permutations 

in_file = sys.argv[1] 

f1 = open(in_file, 'r') 

new_lines = [] 

for line in f1.readlines(): 
    line = line.strip() 
    do stuff to replace my higher confidence matches... 
     new_lines.append(line) 

for x in new_lines: 
    for a,b,c,d,e,f,g,h,i,j in permutations(x.split(), 10): 
     print '{} {} {} {} {} {} {} {} {} {}'.format(a.rstrip('\n'), b.rstrip('\n'), c.rstrip('\n'), d.rstrip('\n'), e.rstrip('\n'), f.rstrip('\n'), g.rstrip('\n'), h.rstrip('\n'), i.rstrip('\n'), j.rstrip('\n')) 

を、私はそれが爆発していないことを確認するために10でこれをテストしたが、これは、私はそれが思ったように動作していないよう:

これは私がこれまでにしようとしているものです。私が5を置くと、私は前に持っていたのと同じリストを私に与えるだけです。私はこれを行う方法がありますか?

+0

したがって、x(5)個の入力からn(10)個のオブジェクトのすべての可能な一意のシーケンスを確認したいのですか? – leumas95

+1

「itertools.product」を[here](https://stackoverflow.com/questions/23058028/how-to-get-all-mappings-between-two-lists?rq=1) – Gleland

+0

@ leumas95の説明に従って使用できます。 。私はちょうどそれを停止するために10を置く。私は本当に各5要素リストの可能なすべての注文をしたい。 – badner

答えて

3

Python itertools.permutationsメソッドは、反復可能で整数の制限(r)をとります。

整数は、並べ替えのリスト([1,2,3]、2)があれば[(1,2)、(1、 3)、(2,1)、(2,3)、(3,1)、(3,2)]となる。

制限は入力リストの長さ以下である必要があります。または、空の繰り返し可能性を返します。

を参照してください。具体的には、「返される項目の数は、0!= r < = nまたはr> nのときは0!/(n-r)!

関連する問題