Python中一个集合中3个数字的所有组合
我想从一组数字中打印出所有可能的三数字组合,这组数字是从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以后的版本,这个方法就可以正常工作。