2

オブジェクト、つまり array[i] とインタレータ カウント 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

の2 番目のパラメーターとして指定された開始インデックス値に注意してください。enumerate()それ以外の場合は、常にインデックスで始まります (常に で開始する場合を除き、 は0無視されます)。startIndex0

于 2012-05-29T21:07:33.067 に答える
1

これはあなたが考えていることだと思います:

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

ただし、これが期待どおりになるとは思いません。 allPorts[startIndex:endIndex]リストを「スライス」して新しいリストを作成しますallPorts[i]startIndex != 0

元の のインデックスになる必要 がある場合は、率直に言って、これがあなたがしなければならないことだと思います:iallPorts

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 に答える