2

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

这就是我正在尝试的:

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

我得到了进一步的错误,只是想知道它是否是代码的这一部分。

这里是 python 的新手。干杯。

4

3 回答 3

7

我猜你宁愿寻找:

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

enumerate()内置函数接受任何列表(元组,可迭代,...)并产生(索引,项目)的元组,索引从 0 开始。

于 2012-05-29T21:05:15.933 回答
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

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

于 2012-05-29T21:07:33.067 回答
1

我怀疑这是你的想法:

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

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

如果您需要 i成为 original 中的索引allPorts,那么我认为这是您必须要做的:

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

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

for i in xrange(startIndex, endIndex):
   pinName = allPorts[i]
   #do stuff
于 2012-05-29T21:09:13.983 回答