我有这个for-loop。我想
中的第二个数字开始
列表。你能给我指路吗?
I=[0,1,2,3,4,5,6]
nI=len(I)
for i in range(nI):
sum=0
for v in range(nV):
for j in range(nJ):
sum=sum+x1[i][j][v]
return sum
发布于 2021-03-01 11:26:16
您应该避免使用内置的名称。如果确实需要,可以在末尾添加一个下划线,例如sum
_
,但这可能是一个提示,您应该使用内置的。
对于迭代变量,建议使用
除非你有理由给它起别的名字。
如果使用numpy数组,则可以使用for value遍历所有值
如果你把
在循环内部,那么它每次都会被重置到那个位置。
你可以使用itertools.product来“去嵌套”for循环,例如
sum(x[i][j][v] for i, j, v in itertools.product(range(nI), range(nJ), range(nV)))
为了减少多个for循环,Itertools有一个乘积函数,它提供了一个生成器,允许您将多个迭代器展平为一个可迭代的元组,这实际上与嵌套的for循环相同。唯一的区别是值的排序。
from itertools import product
for x, y in product(range(3), range(4, 7)):
print(x, y)
0 4
0 5
0 6
1 4
1 5
1 6
2 4
2 5
2 6
[Program finished]
https://stackoverflow.com/questions/53621696
复制相似问题