Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリスト内のオブジェクトを並べ替える方法は?


int、float、strings、chars、または__cmp__メソッドを実装したその他のクラスのリストを並べ替えるには、リストでsortを呼び出すだけで並べ替えることができます。リストを逆順(降順)でソートする場合は、reverseパラメーターも渡すだけです。

my_list = [1, 5, 2, 6, 0]
my_list.sort()
print(my_list)
my_list.sort(reverse=True)
print(my_list)
出力 これにより出力が得られます-

[0, 1, 2, 5, 6]
[6, 5, 2, 1, 0]

タプルは不変であるため、タプルに対して直接呼び出すことができるインプレースソート関数はありません。ソートされたリストを返すsorted関数を使用する必要があります。リストをその場でソートしたくない場合は、リストクラスメソッドsortの代わりにsortedを使用してください。

my_list = [1, 5, 2, 6, 0]
print(sorted(my_list))
print(sorted(my_list, reverse=True))
出力

これにより、出力が得られます-

[0, 1, 2, 5, 6]
[6, 5, 2, 1, 0]

クラスに__cmp__メソッドが実装されていないオブジェクトのリストがある場合は、key引数を使用して、2つの要素を比較する方法を指定できます。たとえば、リストに辞書があり、キーサイズに基づいてそれらを並べ替える場合は、次のように実行できます。

def get_my_key(obj):
  return obj['size']
my_list = [{'name': "foo", 'size': 5}, {'name': "bar", 'size': 3}, {'name': "baz", 'size': 7}]
my_list.sort(key=get_my_key)
print(my_list)
出力

これにより、出力が得られます-

[{'name': 'bar', 'size': 3}, {'name': 'foo', 'size': 5}, {'name': 'baz', 'size': 7}]

各エントリに指定された関数を呼び出し、各エントリのこの値に基づいて並べ替えます。オブジェクトの属性を返すことで、オブジェクトに同じ関数を指定することもできます。


  1. Pythonでリストのサイズを取得するにはどうすればよいですか?

    リストのサイズを見つけるには、組み込み関数lenを使用します。 Pythonドキュメントの状態: len(arg)は、オブジェクトの長さ(アイテムの数)を返します。引数は、シーケンス(文字列、バイト、タプル、リスト、範囲など)またはコレクション(辞書、セット、またはフリーズセット)。」 lenは組み込みであり、__len__を実装するユーザー定義クラスでも使用できます。したがって、この操作は、__ len__の実装に応じてO(n)またはO(1)になる可能性があります。 例 list1 = [1, 2, "Hello"] print(len(list1)) my_str

  2. Pythonで文字列のリストを並べ替える方法は?

    リストを適切に並べ替える、つまりリスト自体を並べ替え、そのリスト自体の順序を変更するには、文字列のリストでsort()を使用できます。たとえば、 >>> a = ["Hello", "My", "Followers"] >>> a.sort() >>> print a ['Followers', 'Hello', 'My'] 元のリストをそのまま維持し、代わりにソートされた要素の新しいリストが必要な場合は、sorted(list)を