2017-08-31 9 views
0

文字列s = "abcde"があります。私はすべての可能な順列を生成し、それらをtxtファイルに書きたいと思う。 OUT FILE.TXTPythonを使用して文字列内の文字のすべての組み合わせをファイルに書き込む

B C D AA AB 交流 広告 AE BA BB BC BD こと CA CB CC CD CE ダ デシベル dc dd EA EB EC 編 EE ... ... eeeda eeedb eeedc eeedd eeede eeeea eeeeb私はitertoolsを使用しますが、それは常に起動 EEEEE

をeeeed eeeec aaaaaと一緒に。

+1

はあなたのコードを共有してください。あなたが望む長さまで長さ1、2、3などの '順列'を生成する必要があるように見えます。これは 'for'ループで簡単に行うことができます。 – Julien

+0

これは順列ではありません!私たちにあなたのコードと期待される出力と実際の出力を表示してください。 – alfasin

答えて

-1

itertools.permutationsは、2つの引数、順列の反復可能な長さをとります。 2番目のアジャスターを指定しないと、デフォルトはlen(iterable)になります。すべての長さを取得するには、それぞれの長さのための順列を印刷する必要があります。

import itertools 
s = "abcde" 
for i in range(len(s)): 
    for permutation in (itertools.permutations(s, i+1)): 
     print ("".join(permutation)) 

出典:https://docs.python.org/2/library/itertools.html#itertools.permutations

+0

本当に順列は2つの要素を取ります。私は急いで書いていて、それを忘れてしまった: – campovski

+0

これは、OPの要件ごとに間違っている。 –

-1
import itertools 

s="abcde" 

def upto_n(s,n): 

    out = [] 

    for i in range(1,n+1,1): 

     out += list(itertools.combinations(s, i)) 

    return out 

print upto_n(s,2) 
print upto_n(s,3) 

アウトプットPY3から入手itertools.productyield from構文を使用して

[('a',), ('b',), ('c',), ('d',), ('e',), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('a', 'e'), ('b', 'c'), ('b', 'd'), ('b', 'e'), ('c', 'd'), ('c', 'e'), ('d', 'e')] 

[('a',), ('b',), ('c',), ('d',), ('e',), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('a', 'e'), ('b', 'c'), ('b', 'd'), ('b', 'e'), ('c', 'd'), ('c', 'e'), ('d', 'e'), ('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'b', 'e'), ('a', 'c', 'd'), ('a', 'c', 'e'), ('a', 'd', 'e'), ('b', 'c', 'd'), ('b', 'c', 'e'), ('b', 'd', 'e'), ('c', 'd', 'e')] 
+0

OPの出力ごとにこれも間違っています。彼らはまた、繰り返しの文字をしたい。 –

0

。 3):

a 
b 
c 
aa 
ab 
ac 
ba 
bb 
bc 
ca 
cb 
cc 
aaa 
aab 
aac 
aba 
abb 
abc 
aca 
acb 
acc 
baa 
bab 
bac 
bba 
bbb 
bbc 
bca 
bcb 
bcc 
caa 
cab 
cac 
cba 
cbb 
cbc 
cca 
ccb 
ccc 


import itertools 

def foo(x): 
    for i in range(1, len(x) + 1): 
     yield from(itertools.product(*([s] * i))) 

for x in foo('abc'): # showing you output for 3 characters, output explodes combinatorially 
    print(''.join(x)) 
は、ファイルに書き込むには、最初に1を開き、ループ内で fooを呼び出す必要があります:

with open('file.txt', 'w') as f: 
    for x in foo('abcde'): 
     f.write(''.join(x) + '\n') 
関連する問題