如何从for循环的第二个索引开始

Abi*_*Abi 8 python numpy python-3.x

我有这个 for 循环。我想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
Run Code Online (Sandbox Code Playgroud)

Lui*_*raz 9

首先要记住python使用零索引。

除了使用 range 函数获取所需项目的索引或切片获取元素之外,您可以遍历列表。

我认为这里变得令人困惑的是,在您的示例中,值和索引是相同的,因此为了澄清我将使用此列表作为示例:

I = ['a', 'b', 'c', 'd', 'e']
nI = len(I) # 5
Run Code Online (Sandbox Code Playgroud)

range 函数将允许您遍历索引:

for i in range(1, nI):
    print(i)
# Prints:
# 1
# 2
# 3
# 4
Run Code Online (Sandbox Code Playgroud)

如果你想使用 range 函数访问值,你应该这样做:

for index in range(1, nI):
    i = I[index]
    print(i)
# Prints:
# b
# c
# d
# e
Run Code Online (Sandbox Code Playgroud)

你也可以使用数组切片来做到这一点,你甚至不需要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
Run Code Online (Sandbox Code Playgroud)


Mas*_*ind 7

您可以简单地使用切片:

for item in I[1:]:
    print(item)
Run Code Online (Sandbox Code Playgroud)

如果你想要索引,使用 pythonic-style enumerate

START = 1
for index, item in enumerate(I[START:], START):
    print(item, index)
Run Code Online (Sandbox Code Playgroud)


Mik*_*nov 5

如果您想从第二个项目迭代列表,只需使用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]
Run Code Online (Sandbox Code Playgroud)

也许,你的函数的一部分只是在某个地方丢失了,但无论如何,在一般 range() 中,它的工作原理是这样的:

range(start_from, stop_at, step_size)
Run Code Online (Sandbox Code Playgroud)

IE

for i in range(2, 7, 2):
    print(i, end=' ')

Out:
2 4 6
Run Code Online (Sandbox Code Playgroud)

编辑

请记住:python 使用零索引,即第一个元素的索引为 0,第二个元素的索引为 1,依此类推。

默认情况下,range从 0 开始,到传递参数的值减一为止。如果有明确的start,则迭代从它的值开始。如果有一个step,它会继续,同时range返回小于 停止值的值。

for i in range(1, 7, 2):
    print(i, end=' ')

Out: 
1 3 5  # there's no 7!
Run Code Online (Sandbox Code Playgroud)

range内置的详细说明在这里