我搜索过,但没有找到任何帮助。这是一个例子:
List.txt
a
b
c
d
我希望能够获得这样的输出:
Output.txt
ab
ac
ad
ba
bc
bd
ca
cb
cd
etc...
答案 0 :(得分: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
认为ab
== ba
并且不会将后者作为输出。
快乐的pythoning:)
答案 1 :(得分: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
答案 2 :(得分:0)
itertools 模块具有组合功能,可以帮助解决类似这样的问题:
>>> from itertools import combinations, permutations, product
>>> s = open('list.txt').read().splitlines()
>>> for t in permutations(s, 2):
print ''.join(t)
答案 3 :(得分:-1)
您可以先将文件读入数组:
lines=[]
for line in file:
lines.append(line)
然后迭代它以获得所需的输出。
for line1 in lines:
for line2 in lines:
print line1+line2
或者将其打印到文件中。