私は検索しましたが、役立つものは何も見つかりませんでした..これは例です:
List.txt
a
b
c
d
次のような出力を取得できるようにしたい:
Output.txt
ab
ac
ad
ba
bc
bd
ca
cb
cd
etc...
私は検索しましたが、役立つものは何も見つかりませんでした..これは例です:
List.txt
a
b
c
d
次のような出力を取得できるようにしたい:
Output.txt
ab
ac
ad
ba
bc
bd
ca
cb
cd
etc...
かなり簡単です...
from itertools import permutations
with open('List.txt') as f:
letters = (l.strip() for l in f if l.strip())
for p in permutations(letters, 2):
print ''.join(p)
出力:
ab
ac
ad
ba
bc
bd
ca
cb
cd
da
db
dc
いくつかのメモ:
このwith
ステートメントにより、作業が完了したときにファイルが確実に閉じられます。
letters
はジェネレーター式であり、多くの場合 (これは別ですが)、ファイル全体を一度に読み込む必要がなくなります。
の使用はl.strip()
、入力に存在する場合に偶発的な空白行を適切に処理することを目的としています。
itertools.permutations
==itertools.combinations
を考慮し、後者を出力として含めないNOT は正しいです。ab
ba
ハッピーパイソン:)
f = open("List.txt")
lines = f.read().splitlines()
lines_new = []
for line in lines:
for line2 in lines:
if not line == line2:
lines_new.append("%s%s" % (line, line2))
print lines_new # ['ab', 'ac', 'ad', 'ba', 'bc', 'bd', 'ca', 'cb', 'cd', 'da', 'db', 'dc']
open("Output.txt", "w").write("\n".join(lines_new))
以下を含む Output.txt というファイルが生成されます。
ab
ac
ad
ba
bc
bd
ca
cb
cd
da
db
dc
itertoolsモジュールには、次のような問題を解決するための組み合わせ関数があります。
>>> from itertools import combinations, permutations, product
>>> s = open('list.txt').read().splitlines()
>>> for t in permutations(s, 2):
print ''.join(t)
最初にファイルを配列に読み込むことができます:
lines=[]
for line in file:
lines.append(line)
それを反復して、目的の出力を取得します。
for line1 in lines:
for line2 in lines:
print line1+line2
または代わりにファイルに出力します。