私はPythonを学んでおり、リストを処理する簡単な方法が利点として提示されています。時々そうですが、これを見てください:
>>> numbers = [20,67,3,2.6,7,74,2.8,90.8,52.8,4,3,2,5,7]
>>> numbers.remove(max(numbers))
>>> max(numbers)
74
リストから 2 番目に大きい数を取得する非常に簡単で迅速な方法。ただし、簡単なリスト処理は、リストを 2 回実行して最大のものを見つけ、次に 2 番目に大きいものを見つけるプログラムを作成するのに役立ちます。また、破壊的でもあります。元のデータを保持したい場合は、データのコピーが 2 つ必要です。必要なもの:
>>> numbers = [20,67,3,2.6,7,74,2.8,90.8,52.8,4,3,2,5,7]
>>> if numbers[0]>numbers[1]):
... m, m2 = numbers[0], numbers[1]
... else:
... m, m2 = numbers[1], numbers[0]
...
>>> for x in numbers[2:]:
... if x>m2:
... if x>m:
... m2, m = m, x
... else:
... m2 = x
...
>>> m2
74
これはリストを一度だけ実行しますが、前のソリューションのように簡潔で明確ではありません。
だから:このような場合、両方を持つ方法はありますか?最初のバージョンの明瞭さ、しかし 2 番目のシングル スルー?