我已经使用itertools包中的组合功能生成了一个元组列表。如何将其传递给整数列表以对其进行切片?这是我的示例代码,但是由于元组而给我一个错误:
from itertools import combinations
myNumbers = [12,4,5,6,7,9,3,2]
listOfIndexes = list(range(8))
comb = combinations(listOfIndexes, 3)
for i in list(comb):
print(myNumbers[int(i)])
我的预期输出是打印myNumbers中3个数字的所有组合,例如:
12,4,5
4,5,6
5,6,7
...
这有效:
from itertools import combinations
myNumbers = [12,4,5,6,7,9,3,2]
listOfIndexes = list(range(8))
comb = combinations(listOfIndexes, 3)
for i in list(comb):
a,b,c = myNumbers[i[0]], myNumbers[i[1]], myNumbers[i[2]]
print(a,b,c)
...但据我所知,上面的代码只是以一种效率较低的方式做到这一点:
print([i for i in combinations(myNumbers, 3)])
基于示例输出,看起来您打算打印列表的所有连续三个元素。这是不同的,我们确实需要[[not组合。
我们可以使用以下方法对列表进行切片:myNumbers = [12,4,5,6,7,9,3,2]
for i in range(len(myNumbers)-2):
print(myNumbers[i:i+3])
或者我们可以用逗号作为分隔符打印项目:
myNumbers = [12,4,5,6,7,9,3,2] for i in range(len(myNumbers)-2): print(*myNumbers[i:i+3], sep=',')
然后打印:
>>> for i in range(len(myNumbers)-2): ... print(*myNumbers[i:i+3], sep=',') ... 12,4,5 4,5,6 5,6,7 6,7,9 7,9,3 9,3,2
from itertools import combinations
myNumbers = [12,4,5,6,7,9,3,2]
listOfIndexes = list(range(8))
comb = combinations(listOfIndexes, 3)
for i in list(comb):
print(*[myNumbers[ij] for ij in i],sep=',')