Python中一个集合中3个数字的所有组合

0 投票
4 回答
13189 浏览
提问于 2025-04-18 00:35

我想从一组数字中打印出所有可能的三数字组合,这组数字是从0 到 n-1。每个组合都要是独一无二的。我通过以下代码得到了变量n

n = raw_input("Please enter n: ")

但是我在想出算法时遇到了困难。有没有人能帮帮我?

4 个回答

1

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当你输入一个数字时,程序可以根据这个数字来决定接下来要做什么。这就像你在游戏中选择不同的路径,根据你的选择来决定故事的发展。

为了实现这个功能,我们通常会使用“条件语句”。条件语句就像是一个判断的工具,它会检查你给出的条件是否成立。如果条件成立,程序就会执行某个操作;如果不成立,程序就会执行另一个操作。

举个简单的例子,如果你输入的数字是大于10的,程序就会告诉你“这个数字很大”;如果小于或等于10,程序就会说“这个数字不大”。这样,程序就能根据你的输入做出不同的反应。

总之,条件语句帮助程序根据不同的情况做出不同的决策,就像生活中我们根据情况选择不同的行动一样。

combos = []
for x in xrange(n):
    for y in xrange(n):
        for z in xrange(n):
             combos.append([x,y,z])
2

itertools 是你在这里的好帮手,特别是里面的 permutations 函数。

示例:

from itertools import permutations 

for item in permutations(range(n), 3): 
    print item

这段代码是基于你使用的是 Python 2.6 或更新的版本。

3

如果你想要所有可能的组合,并且这些组合中的值可以重复,但位置不同,你需要使用一种叫做“笛卡尔积”的方法,像这样:

from itertools import product
t = range(n)
print set(product(set(t),repeat = 3))

比如说,如果 n = 3,输出结果将会是:

set([(0, 1, 1), (1, 1, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1), (0, 0, 0), (0, 1, 0), (1, 1, 1)])

希望这对你有帮助

10
from itertools import combinations
list(combinations(range(n),3))

只要你使用的是Python 2.6以后的版本,这个方法就可以正常工作。

撰写回答