-1

重複の可能性:
for ループを while ループに変換する

私が作成したforループ用にこれを持っているので、whileループで動作するようにどのように書くのか疑問に思っていました。

def scrollList(myList):
    negativeIndices=[]
    for i in range(0,len(myList)):
        if myList[i]<0:
            negativeIndices.append(i)
    return negativeIndices

これまでのところ、私はこれを持っています

def scrollList2(myList):
    negativeIndices=[]
    i= 0
    length= len(myList)
    while i != length:
        if myList[i]<0:
            negativeIndices.append(i)
            i=i+1

    return negativeIndices
4

2 に答える 2

6

さて、あなたはもうすぐそこにいます。こんな感じです:

def scrollList2(myList):
    negativeIndices=[]
    i= 0
    length= len(myList)
    while i != length:
        if myList[i]<0:
            negativeIndices.append(i)
        i=i+1

    return negativeIndices

問題は、反復ごとにループ インデックスをインクリメントする必要があることです。負の値が見つかったときにのみ増加していました。


しかし、それはループの方が優れておりforforループは複雑すぎます。私は次のように書きます:

def scrollList(myList):
    negativeIndices=[]
    for index, item in enumerate(myList):
        if item<0:
            negativeIndices.append(index)
    return negativeIndices
于 2012-09-26T22:41:15.250 に答える
2

まず、インクリメンターiは、条件を満たしたときだけでなく、常に更新する必要があります。ステートメントでのみ実行するとif、戻り可能な要素が表示されたときにのみ前進することを意味するため、最初の要素が条件を満たさない場合、関数はハングします。おっとっと。これはうまくいくでしょう:

def scrollList2(myList):
    negativeIndices=[]
    i= 0
    length= len(myList)
    while i != length:
        if myList[i]<0:
            negativeIndices.append(i)
        i=i+1

    return negativeIndices
于 2012-09-26T22:41:23.343 に答える