gpt4 book ai didi

Python - 循环等效的 C 程序

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:33 25 4
gpt4 key购买 nike

我在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com