-1

数値のリストを入力して、負の値を含む元のリストのインデックスのリストを返そうとしています。whileループも使いたいです。これまでの私のコードは次のとおりです。

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

ループを停止する方法と、インデックスを返す方法を教えてください。今それを実行すると、永久に実行されます (無限ループ) myList の最後のインデックスに到達したら停止するように指示するにはどうすればよいですか?

4

3 に答える 3

2

最初の非負の数にヒットすると、ifが再び入力されることはなく、再びiインクリメントされることもありません。インクリメントする部分をブロックiの外に出します。if

于 2013-10-08T22:38:55.837 に答える
0

OPはwhileループを使用したいので、この答えは正確ではありません-しかし、多くのpythonistasが次のようなものを期待することを指摘する必要があると思います:

neg_indices = [k for k,v in enumerate(myList) if v < 0]

これは他の回答では暗黙的ですが、潜んでいる人やOPが将来検討するのに役立つかもしれません... の回答が示すように確かに仕事をしますが、リスト内包表記では「無料」です。さらに、ここでは無限ループの可能性はありません....

于 2013-10-08T23:48:11.297 に答える