我想以所有可能的组合生成四个素数的列表,这样这些数字就不会在列表中重复。你知道吗
我知道如何用这个函数得到我想要的:
def combinations():
primeList = [2, 3, 5, 7, 11, 13, 17]
length = len(primeList)
for i in range(0, length-3):
for j in range(i+1, length-2):
for k in range(j+1, length-1):
for h in range(k+1, length):
print([primeList[i], primeList[j], primeList[k], primeList[h]])
返回这样的列表:http://postimg.org/image/94u3hzgqb/
但是我想使用像下面这样构造的代码,因为我想要这个特殊的结构,并且想知道为什么它不能像我刚才复制粘贴的函数那样工作。你知道吗
def combinations2():
primeList = [2, 3, 5, 7, 11, 13, 17]
for i1, i in enumerate(primeList[0: -3]):
for i2, j in enumerate(primeList[i1+1: -2]):
for i3, k in enumerate(primeList[i2+1: -1]):
for h in primeList[i3+1:]:
print([i, j, k, h])
返回包含重复元素的列表:http://postimg.org/image/y0h0gwfhf/
显然,我使用for循环枚举错误的方式,但似乎无法找出哪里可能是错误的。对我来说,这两个函数看起来应该做相同的事情。你知道吗
如果可以的话,请指出我犯的错误或者纠正我。你知道吗
因为i1,i2,i3都是从零开始的。在第一次迭代中,您有
这是正确的功能:
相关问题 更多 >
编程相关推荐