我在我的 C 程序中使用了以下 for
循环:
for (i = 0; i < 5; i++) {
for (j = i + 1; j < 5; j++) {
//some operation using the index values
}
}
第二个 for
循环 (j = i + 1
) 的 python 等价物是什么?我尝试了以下但出现错误:
for indexi, i in enumerate(list):
for indexj = indexi + 1, j in enumerate(list):
怎么做?
最佳答案
如果您出于某种原因试图获取实际索引值(和/或需要控制内部循环与外部循环分开),您会这样做:
for i in range(len(mylist)):
for j in range(i+1, len(mylist)):
# Or for indices and elements:
for i, x in enumerate(mylist):
for j, y in enumerate(mylist[i+1:], start=i+1):
但如果您真正想要的是元素的唯一非重复配对,则有更好的方法,itertools.combinations
:
import itertools
for x, y in itertools.combinations(mylist, 2):
它获取的是值,而不是索引,但通常是您真正想要的。如果你真的也需要索引,你可以混合使用 enumerate
:
for (i, x), (j, y) in itertools.combinations(enumerate(mylist), 2):
它获取您要查找的确切索引模式以及值。您还可以使用它作为单个循环有效地单独生成索引:
for i, j in itertools.combinations(range(len(mylist)), 2):
简短的回答:itertools
对这样的东西很神奇。
关于Python - 循环等效的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647248/