0
入力リストからリスト値を生成する、広範囲に使用されるwhileループを置き換えて最適化したい。 iter、itertools、ジェネレータ関数などでこれをどのように達成できますか?次のコード例は、説明のためだけのものです。whileループをジェネレータ関数に変換する
thislist = [2, 8, 17, 5, 41, 77, 3, 11]
newlist = []
index = 0
listlength = len(thislist)
while index < listlength:
value = 0
while thislist[index] >= 0:
value += thislist[index]
value += 2 * value
index += 1
value += thislist[index]
index += 1
newlist.append(value)
print newlist
はあなたのコード例では、 'IndexErrorを返しました。おそらく、内側と外側に同じ "インデックス"を再使用しているからでしょう。 – MattH
そして内側の 'while'終了条件は決して満たされません。 – MattH
ジェネレータの基本的な考え方:それを関数群(ブロック)に入れ、 'output_list.append(value)'を 'yield value'に変更します。 –