我有这个循环。我希望i in range(nI)
从I
列表中的第二个数字开始。你能指导我吗?
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
答案 0 :(得分:2)
如果要遍历第二个项目的列表,只需使用range(1, nI)
(如果nI是列表的长度左右)。
for i in range(1, nI):
sum=0
for v in range(nV):
for j in range(nJ):
sum=sum+x1[i][j][v]
可能,函数的一部分丢失了,但是无论如何,在一般的range()中,它是这样的:
range(start_from, stop_at, step_size)
i。 e。
for i in range(2, 7, 2):
print(i, end=' ')
Out:
2 4 6
修改
请记住:python使用零索引,即第一个元素的索引为0,第二个元素的索引为1等等
默认情况下,range
从0开始,到所传递参数的值减去1。。如果有明确的 start ,则迭代从其开始值。如果存在步骤,则该操作将继续,而range
返回的值小于 停止。
for i in range(1, 7, 2):
print(i, end=' ')
Out:
1 3 5 # there's no 7!
range
内置的详细描述为here。
答案 1 :(得分:1)
如果未另行指定,则范围从0索引开始。您想使用类似
for i in range(1,nI):
...
答案 2 :(得分:1)
您可以简单地使用切片:
for item in I[1:]:
print(item)
如果要建立索引,请使用pythonic风格的enumerate
:
START = 1
for index, item in enumerate(I[START:], START):
print(item, index)
答案 3 :(得分:0)
首先要记住python使用零索引。
除了使用range函数获取所需项目的索引或使用slice获取元素之外,您可以遍历列表。
在这里我感到困惑的是,在您的示例中,值和索引相同,因此为了澄清,我将使用此列表作为示例:
I = ['a', 'b', 'c', 'd', 'e']
nI = len(I) # 5
使用range函数可以遍历索引:
for i in range(1, nI):
print(i)
# Prints:
# 1
# 2
# 3
# 4
如果要使用范围函数访问值,则应这样做:
for index in range(1, nI):
i = I[index]
print(i)
# Prints:
# b
# c
# d
# e
您还可以使用数组切片来执行此操作,甚至不需要nI
。数组切片将使用您的切片返回一个新数组。
该切片使用the_list_reference[start:end:steps]
完成,其中所有三个参数都是可选的,并且:
start
是切片中第一个包含的索引
end
是要从切片中排除的第一个元素的索引
steps
是从({预期的)start
开始的每个下一个索引要执行的步骤(如果steps
是2并以1开始,它将获得每个奇数索引)。
示例:
for i in I[1:]:
print(i)
# Prints:
# b
# c
# d
# e
答案 4 :(得分:0)
i, j, k, m, n
,除非您有理由将其命名为其他名称。 np.nditer(...)
中使用 for value 遍历所有值sum = 0
放在循环内,那么它每次都会被重置。sum(x[i][j][v] for i, j, v in itertools.product(range(nI), range(nJ), range(nV)))
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]