【发布时间】:2019-09-15 00:00:40
【问题描述】:
我想获得三个(或更多)数字的所有可能组合。数字本身需要在 +-1 的范围内。范围是找到“相似的数字”——例如数字 3 需要迭代为 2,3,4。 例如我有:
num1 = 3
num2 = 4
num3 = 1
所以在这个例子中,我想要这三个数字和每个数字 +-1 的所有组合。 (例如 341、241、441;351、331、...)。所以对于示例数字,我应该得到 27 个组合。
第一个想法是在 python 中使用 3 个 for 循环,如下所示:
num1 = 3
num2 = 4
num3 = 1
def getSimilar(num1,num2,num3):
num1 = n1 - 2
for i in range (3):
num1 = num1 + 1
num2 = n2 - 2
for j in range(3):
num2 = num2 + 1
num3 = n3 - 2
for k in range(3):
num3 = num3 + 1
print(num1,num2,num3)
我得到的输出:
2 3 0
2 3 1
2 3 2
2 4 0
2 4 1
2 4 2
2 5 0
2 5 1
2 5 2
3 3 0
3 3 1
3 3 2
3 4 0
3 4 1
3 4 2
3 5 0
3 5 1
3 5 2
4 3 0
4 3 1
4 3 2
4 4 0
4 4 1
4 4 2
4 5 0
4 5 1
4 5 2
在 python 中是否有一种更智能、更快捷的方法来执行此操作,而不是使用 3 个 for 循环?输出的顺序无关紧要。 我还有一个小问题: 如果一个数字是 0,我需要它只迭代到 0 和 1,而不是 -1。 所以输出为0; 4; 1 应该是:
0 4 1
0 4 2
0 4 0
0 3 1
0 3 2
0 3 0
0 5 1
0 5 2
0 5 0
1 4 1
1 4 2
1 4 0
1 3 1
1 3 2
1 3 0
1 5 1
1 5 2
1 5 0
【问题讨论】:
-
那么 3,4 和 1 是您要创建的数字的数字吗?
-
我想告诉你的一件事是打印内容会减慢计算时间。
-
@Hilea 我知道,这只是为了在我的代码中进行调试。不过谢谢!
标签: python python-3.x iteration