-1

私は検索しましたが、役立つものは何も見つかりませんでした..これは例です:

    List.txt
    a
    b
    c
    d

次のような出力を取得できるようにしたい:

    Output.txt
    ab
    ac
    ad
    ba
    bc
    bd
    ca
    cb
    cd
    etc...
4

4 に答える 4

2

かなり簡単です...

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 は正しいです。abba

ハッピーパイソン:)

于 2011-10-19T19:04:52.053 に答える
0
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
于 2011-10-19T18:42:27.893 に答える
0

itertoolsモジュールには、次のような問題を解決するための組み合わせ関数があります。

>>> from itertools import combinations, permutations, product
>>> s = open('list.txt').read().splitlines()
>>> for t in permutations(s, 2):
        print ''.join(t)
于 2011-10-19T18:48:20.337 に答える
-1

最初にファイルを配列に読み込むことができます:

lines=[]
for line in file:
  lines.append(line)

それを反復して、目的の出力を取得します。

for line1 in lines:
  for line2 in lines:
    print line1+line2

または代わりにファイルに出力します。

于 2011-10-19T18:40:16.680 に答える