pythonのlistを重複削除してソートする
a = [3, 1, 2, 2, 3]
これを
b = [1, 2, 3]
こうしたい。
解法
b = sorted(set(a))
list(set(a)).sort()はNoneを返す
listをソートするにはsortedの他にsortというのもあります。それを使ってlist(set(a)).sort()と書いてみるとうまく動かなかったという話です。
ChatGPTに理由を聞いてみたんですがよくわかりません。ChatGPT曰く、
list(set(a)).sort() が None を返す理由は、
list(set(a)) が 一時的に作られたリストであり、
そのリストに対して .sort() を インプレース(その場)で実行し、
戻り値は常に None だからです。
どうしてもsortを使いたいときは以下のようにすると良いです。
b = list(set(a))
b.sort()