Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中组合单个文本文件的行?_Python_Combinatorics_Itertools - Fatal编程技术网

如何在python中组合单个文本文件的行?

如何在python中组合单个文本文件的行?,python,combinatorics,itertools,Python,Combinatorics,Itertools,我已经找过了,但找不到任何帮助。。这是一个例子: List.txt a b c d 我希望能够获得如下输出: Output.txt ab ac ad ba bc bd ca cb cd etc... 您可以先将文件读入数组: lines=[] for line in file: lines.append(line) 然后对其进行迭代以获得所需的输出 for l

我已经找过了,但找不到任何帮助。。这是一个例子:

    List.txt
    a
    b
    c
    d
我希望能够获得如下输出:

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

您可以先将文件读入数组:

lines=[]
for line in file:
  lines.append(line)
然后对其进行迭代以获得所需的输出

for line1 in lines:
  for line2 in lines:
    print line1+line2
或者将其打印到文件中

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)

非常简单

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
是正确的,而不是考虑
ab
=
ba
itertools.compositions
,并且不会将后者作为输出


Happy Pythong:)

你能提供你想做的事情的算法/重复格式吗?如果你向我们展示你的尝试,你会得到更多帮助,这样人们就能更好地了解你挂断的地方。这是家庭作业问题吗?如果是的话,你应该这样做。在这种情况下,你将需要<代码>迭代工具。排列< <代码>,考虑<代码>地图('',连接,排列('ABCD ',2))< /代码> VS <代码> map('',连接,组合'ABCD ',2)与期望的输出相比较。