对句子中的所有k执行kCombination的算法

2024-05-03 04:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件:test.txt,每行都有一个句子。在

Hello World  
99 Bottles of Beer  
Humpty Dumpty Sat on the wall

我希望生成一个输出,显示该文件输入的所有组合(即2n-1个组合)。在上面的实例中,算法将输出以下内容-每个组合都要用管道分隔(|

^{pr2}$

perl或Bashi建议最好用perl或Bashi编写脚本。在


Tags: 文件oftesttxthelloworldonsat
2条回答
import itertools

l = [s.strip() for s in open('test.txt')]

for i in range(len(l)):
  print '\n'.join(map(' | '.join, itertools.combinations(l, i + 1)))

生产

^{pr2}$

{I>你不能用一个显式的cd1>替换它,如果你不喜欢的话:

for i in range(len(l)):
  for c in map(' | '.join, itertools.combinations(l, i + 1)):
    print c

这稍微比较冗长,但更经济。在

你能做到的

import itertools

file = open("test.txt")
lines = files.readlines()

current = []
for i in range(len(lines):
    current.append(i)

    for combination in set(itertools.permutations(current)):
        for l in combination:
            output+=' | '.join(lines[l])
        output+= '\n'
print output

我对我的itertools&set技能感到厌倦,但这应该是有效的,除非内存受到限制。。在

相关问题 更多 >