1

Python は初めてで、forループをループに変換する必要がありますが、whileその方法がわかりません。これは私が取り組んでいるものです:

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

5 に答える 5

5

ここでの問題は、while ループが必要なことではなく、python for ループを適切に使用する必要があることです。for ループにより、コレクション (コードの場合は整数のシーケンス) の反復が発生します。

for n, val in enumerate(mylist):
    if val < 0: negativeindices.append(n)

enumerateの形式のペアのシーケンスを生成するビルトイン(index, value)です。

以下を使用して、機能的なスタイルでこれを実行することもできます。

[n for n, val in enumerate(mylist) if val < 0]

これは、この種のタスクに対するより一般的な Python のイディオムです。明示的な関数を作成する必要さえないという利点があるため、このロジックはインラインのままにすることができます。

これを while ループで行うことを主張する場合は、Python の反復機能を利用するものを次に示します (これは基本的に上記の手動バージョンであることに注意してください。 for ループは for です):

data = enumerate(list)
try:
    while True:
        n, val = next(data)
        if val < 0: negativeindices.append(n)
except StopIteration:
    return negativeindices
于 2012-09-26T22:02:18.233 に答える
3

最初の答えは簡単な方法です。インデックス変数をインクリメントすることにアレルギーがある場合は、別の方法があります。

def scrollList(myList):
  negativeIndices = []
  indices = range(0,len(myList)):
  while indices:
        i = indices.pop();
        if myList[i] < 0:
             negativeIndices.append(i)
  return negativeIndices
于 2012-09-26T21:55:21.017 に答える
1

このような:

def scrollList(myList):
      negativeIndices = []
      i = 0
      while i < len(myList):
            if myList[i] < 0:
                 negativeIndices.append(i)
            i += 1
      return negativeIndices
于 2012-09-26T21:27:49.277 に答える
-1
def scrollList(myList):
      negativeIndices = []
      while myList:
          num = myList.pop()
          if num < 0:
             negativeIndices.append(num)
      return negativeIndices
于 2012-09-26T21:28:39.313 に答える
-2

ループの変数を設定してインクリメントするだけです。

int i = 0;
while(i<len(myList)):
    if myList[i] < 0:
        negativeIndices.append(i)
    i++;

return negativeIndices
于 2012-09-26T21:28:42.847 に答える