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}]
各エントリに指定された関数を呼び出し、各エントリのこの値に基づいて並べ替えます。オブジェクトの属性を返すことで、オブジェクトに同じ関数を指定することもできます。
-
Pythonでリストのサイズを取得するにはどうすればよいですか?
リストのサイズを見つけるには、組み込み関数lenを使用します。 Pythonドキュメントの状態: len(arg)は、オブジェクトの長さ(アイテムの数)を返します。引数は、シーケンス(文字列、バイト、タプル、リスト、範囲など)またはコレクション(辞書、セット、またはフリーズセット)。」 lenは組み込みであり、__len__を実装するユーザー定義クラスでも使用できます。したがって、この操作は、__ len__の実装に応じてO(n)またはO(1)になる可能性があります。 例 list1 = [1, 2, "Hello"] print(len(list1)) my_str
-
Pythonで文字列のリストを並べ替える方法は?
リストを適切に並べ替える、つまりリスト自体を並べ替え、そのリスト自体の順序を変更するには、文字列のリストでsort()を使用できます。たとえば、 >>> a = ["Hello", "My", "Followers"] >>> a.sort() >>> print a ['Followers', 'Hello', 'My'] 元のリストをそのまま維持し、代わりにソートされた要素の新しいリストが必要な場合は、sorted(list)を