数値文字列のリストの並べ替え
数値を表す文字列を扱う場合、Python の sort() 関数は混乱を招く可能性があります。この記事では、その理由を説明し、そのようなリストを数値的に並べ替える解決策を示します。
問題:
以下のコード スニペットを考えてみましょう:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] for item in list1: item = int(item) list1.sort() print(list1)
これコードは、リスト内の各文字列を整数に変換し、リストを並べ替えようとします。ただし、出力は正しくありません:
['1', '10', '2', '200', '22', '23', '3', '4']
解決策:
指定されたコードの問題は、各文字列がループ内で整数に変換されることです。 、ループは元のリストを更新しません。これを修正するには、文字列を整数に変換し、新しいリストを作成します:
list1 = [int(x) for x in list1] list1.sort()
キー関数の使用:
代わりに文字列を保持する必要がある場合それらを整数に変換すると、sort() で key パラメータを使用できます。 function:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] list1.sort(key=int)
または単一行:
list1 = sorted([int(x) for x in list1])
どちらの場合も、 int() 関数は比較する前に各文字列のキーとして呼び出され、リストを許可します。数値的にソートされます。
以上がPython で数値文字列のリストを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。