私は今朝スクリプトを書くときに私が期待していないことに気付きました。私はリストの理解を使い、1つのステートメントですべてをソートしようとしましたが、驚くべき結果を得ました。次のコードは、私の一般的なユースケースをまとめたものが、この質問のために簡略化されていますリストの理解を1つのステートメントで並べ替える
Transaction = namedtuple('Transaction', ['code', 'type'])
my_list = [Transaction('code1', 'AAAAA'), Transaction('code2', 'BBBBB'), Transaction('code3', 'AAAAA')]
types = ['AAAAA', 'CCCCC']
result = [trans for trans in my_list if trans.type in types].sort(key = lambda x: x.code)
print result
出力:私は理解を使用してリストを作成した場合
None
、その後、事実の後にそれをソートし、すべてがあります良い。なぜこれが起こるのか不思議です。
'sort'メソッドはリスト* in-place *をソートしてから' None'を返します。 – sloth