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)
首先要记住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)
您可以简单地使用切片:
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)
如果您想从第二个项目迭代列表,只需使用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
内置的详细说明在这里。
归档时间: |
|
查看次数: |
56235 次 |
最近记录: |