8

私が読んでいたチュートリアルに従って、Pythonのリストがどのように機能するかをテストしようとしていました。list.sort()orを使おうとするlist.reverse()と、インタプリタは をくれNoneます。

これら2つの方法から結果を得る方法を教えてください:

a = [66.25, 333, 333, 1, 1234.5]
print(a.sort())
print(a.reverse())
4

4 に答える 4

37

.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]
于 2013-05-09T11:24:35.497 に答える
2

単純な昇順ソートは非常に簡単です。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]
于 2016-04-15T09:03:42.567 に答える
0

このメソッドはその場で動作します。

このコードは機能します (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]
于 2013-05-09T14:48:48.247 に答える