オブジェクト、つまり array[i] とインタレータ カウント i にアクセスしたい。
これは私がしようとしているものです:
for i, pinName in allPorts[startIndex:endIndex]:
#do stuff
それがコードのこの部分であるかどうか疑問に思っているだけで、さらに下にエラーが表示されます。
ここでPythonを初めて使用します。乾杯。
私はあなたがむしろ探していると思います:
for i, pinName in enumerate(allPorts[startIndex:endIndex]):
...
ビルトインは任意のリスト (タプル、enumerate()
イテラブル、...) を取り、インデックスが 0 から始まる (インデックス、アイテム) のタプルを生成します。
インデックス値と要素を持つタプルを返す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
の2 番目のパラメーターとして指定された開始インデックス値に注意してください。enumerate()
それ以外の場合は、常にインデックスで始まります (常に で開始する場合を除き、 は0
無視されます)。startIndex
0
これはあなたが考えていることだと思います:
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