python - 这对于循环有效吗?

时间:2012-05-29 21:02:55

标签: python loops for-loop

我想访问对象,即array [i],以及interator计数,i。

这就是我正在尝试的:

 for i, pinName in allPorts[startIndex:endIndex]:
     #do stuff

我进一步发现错误,只是想知道这是否是代码的这一部分。

这里是python的新手。欢呼声。

3 个答案:

答案 0 :(得分:7)

我想你宁愿寻找:

for i, pinName in enumerate(allPorts[startIndex:endIndex]):
    ...

enumerate()内置任意列表(元组,可迭代,...)并产生(索引,项目)元组,索引从0开始。

答案 1 :(得分:4)

考虑enumerate(),它返回一个带有索引值和元素的元组:

startIndex = 2
endIndex = 4

for i, pinName in enumerate(allPorts[startIndex:endIndex], startIndex):
    print('index = {}  element = {}'.format(i, pinName))

的产率:

index = 2  element = 66
index = 3  element = 99

请注意在<{1}}中指定为第二个参数的 起始索引值 ,否则它将始终以索引enumerate()开头(忽略您的{{1}除非你总是想以0开头。)

答案 2 :(得分:1)

我怀疑这是你在想的:

for i, pinName in enumerate(allPorts[startIndex:endIndex]):
    #do stuff

但是,我认为这不会达到您的预期。 allPorts[startIndex:endIndex]将“切片”列表并创建一个新列表,因此如果allPorts[i]

startIndex != 0仍会提供错误的索引

如果您需要 i作为原始allPorts中的索引,那么我认为这是您必须要做的事情:

<击>

<击>
i = startIndex
while i < endIndex:
   pinName = allPorts[i]
   #do stuff
   i += 1

<击>

正如评论中所建议的,这是一个更好的方法:

for i in xrange(startIndex, endIndex):
   pinName = allPorts[i]
   #do stuff