今朝スクリプトを書いているときに、予期していなかったことに気づきました。リスト内包表記を使用して、すべてを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
理解度を使用してリストを作成し、事後に並べ替えると、すべて問題ありません。なぜこれが起こるのか興味がありますか?