Python - 循环等效的 C 程序

标签 python c

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

相关文章:

Python - 日期时间时间始终为零

c++ - 在 2 个 c 文件中包含头文件(包含变量定义)时没有构建错误

c - 在 Windows 7 中保存文件

c# - HRESULT 异常 : 0x80131047

c - 如何比较两个数字,看看哪个更大

python - Django 自定义用户模型和用户管理器

javascript - Python:解析类似 JSON 的 Javascript 数据结构(带连续逗号)

python - Tornado 安全 cookie 过期(又名安全 session cookie)

python - 在mac 10.8.3上安装lxml

CS50 PSET4 无法释放拼写器中的内存