Skip to main content
 首页 » 编程设计

python之列出所有可能的组合

2025年05月04日9bhlsheji

我想知道你是否可以帮我解决这个问题。

我有以下代码来表示所有可能的数字范围组合:

import itertools 
lst = [1, 2, 3] 
combs = [] 
for i in xrange(1, len(lst)+1): 
   els = [list(x) for x in itertools.combinations(lst, i)] 
   combs.extend(els) 

重要的是它以

的形式表示输出
[[1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]] 

在单独的文本文件中表示每个组合对我来说将大有裨益。每个文本文件在一行中代表组合中的每个数字。如(1,2),1在第一行,2在第二行,没有逗号。

非常感谢您对我的帮助。

编辑

感谢百万人的帮助。不胜感激。

我还有一个小问题需要解决。

对于 Poke 解决方案,这很好,但有一个小问题(我错误地说明了这一点)

文件的输出将是:

[[1], [2], [3]] 
[[1, 2], [1, 3], [2, 3]] 
[[1, 2, 3]] 

问题是我需要将代码用于大量组合 (6-39)。

你能帮我解决这个问题吗?即使编辑提供的代码本身?

万分感谢

请您参考如下方法:

您的问题与实际生成组合完全不同。您想要的只是一种输出数据的特殊方式。您可以使用标准文件写入工具轻松完成此操作:

>>> combinations = [[1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]] 
>>> for i, combination in enumerate(combinations): 
        with open(r'C:\Users\poke\Desktop\foobar\{0}.txt'.format(i), 'w+') as f: 
            for value in combination: 
                f.write(str(value) + '\n')