私が読んでいたチュートリアルに従って、Pythonのリストがどのように機能するかをテストしようとしていました。list.sort()
orを使おうとするlist.reverse()
と、インタプリタは をくれNone
ます。
これら2つの方法から結果を得る方法を教えてください:
a = [66.25, 333, 333, 1, 1234.5]
print(a.sort())
print(a.reverse())
.sort()
.reverse()
リストを所定の位置に変更して戻ります可変シーケンスNone
のドキュメントを参照してください:
sort()
およびメソッドはreverse()
、大きなリストをソートまたは反転するときに、スペースを節約するためにリストを変更します。これらは副作用によって動作することを思い出してもらうために、並べ替えられたリストまたは反転されたリストを返しません。
代わりにこれを行います:
a.sort()
print(a)
a.reverse()
print(a)
または関数sorted()
とreversed()
関数を使用します。
print(sorted(a)) # just sorted
print(list(reversed(a))) # just reversed
print(a[::-1]) # reversing by using a negative slice step
print(sorted(a, reverse=True)) # sorted *and* reversed
これらのメソッドは新しいリストを返し、元の入力リストはそのまま残します。
デモ、インプレースソートとリバース:
>>> a = [66.25, 333, 333, 1, 1234.5]
>>> a.sort()
>>> print(a)
[1, 66.25, 333, 333, 1234.5]
>>> a.reverse()
>>> print(a)
[1234.5, 333, 333, 66.25, 1]
そして、並べ替えおよび反転された新しいリストを作成します。
>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(sorted(a))
[1, 66.25, 333, 333, 1234.5]
>>> print(list(reversed(a)))
[1234.5, 1, 333, 333, 66.25]
>>> print(a[::-1])
[1234.5, 1, 333, 333, 66.25]
>>> print(sorted(a, reverse=True))
[1234.5, 333, 333, 66.25, 1]
>>> a # input list is untouched
[66.25, 333, 333, 1, 1234.5]
単純な昇順ソートは非常に簡単です。sorted() 関数を呼び出します。新しいソート済みリストを返します。
>>> sorted([66.25, 333, 333, 1, 1234.5])
[1, 66.25, 333, 333, 1234.5]
sorted() は、ブール値を持つ逆パラメーターを受け入れます。
>>> sorted([66.25, 333, 333, 1, 1234.5], reverse=True)
[1234.5, 333, 333, 66.25, 1]
このメソッドはその場で動作します。
このコードは機能します (python 3.x)
a = [66.25, 333, 333, 1, 1234.5]
a.sort()
print(a)
a.reverse()
print(a)
>>>
[1, 66.25, 333, 333, 1234.5]
[1234.5, 333, 333, 66.25, 1]