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

时间:2018-12-04 21:29:04

标签: python python-3.x numpy

我有这个循环。我希望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

5 个答案:

答案 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)

  • 您应该避免使用内置函数的名称。如果确实必须,请在末尾添加下划线,例如sum_,但这可能暗示您应该改用内置函数。
  • 对于迭代变量,建议您使用i, j, k, m, n,除非您有理由将其命名为其他名称。
  • 如果您使用的是 numpy 数组,则可以在 np.nditer(...) 中使用 for value 遍历所有值
  • 如果您将 sum = 0 放在循环内,那么它每次都会被重置。
  • 您可以使用 itertools.product 例如“取消嵌套”for 循环
sum(x[i][j][v] for i, j, v in itertools.product(range(nI), range(nJ), range(nV))) 
  • 为了减少多个 for 循环,Itertools 有一个 product 函数,它为您提供了一个生成器,该生成器允许您将多个可迭代对象扁平化为一个可迭代的元组,这实际上与嵌套 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]
相关问题