python itertools组合可伸缩性

时间:2012-08-05 16:09:15

标签: python combinations itertools

我设法修改了我在互联网上找到的示例代码,以便从文件夹中找到成对的一组文件的所有可能组合。

如果我有一个文件夹 test ,其中包含以下文件: file1,file2,file3,file4 并运行以下代码:

import os, itertools, glob
folder = "test"

files = glob.glob(folder + "/*")
counter = 0
for file1, file2 in itertools.combinations(files, 2):
  counter = counter + 1
  output = file1 + " and " + file2
  print output, counter

我的输出是:

test/file1 and test/file2 1
test/file1 and test/file3 2
test/file1 and test/file4 3
test/file2 and test/file3 4
test/file2 and test/file4 5
test/file3 and test/file4 6

最适合列出所有可能的2个文件组而不重复。现在,由于我将 for 循环硬编码,我遇到了将此扩展为“x”文件组并将代码保持简单的问题。 IE,我希望用户选择“x”,如果他选择3,脚本将显示输出:

test/file1 and test/file2 and test/file3 1
test/file1 and test/file2 and test/file4 2
test/file1 and test/file3 and test/file4 3
test/file2 and test/file3 and test/file4 4

整个想法不是在stdout上实际显示输出,而是在子进程调用中将它们用作参数。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

x=3

for combination in itertools.combinations(files, x):
  counter = counter + 1
  output = " and ".join(combination)
  print output, counter
可以使用sys.argv

获取

命令行参数