【发布时间】:2012-07-11 13:36:50
【问题描述】:
今天早上在编写脚本时,我注意到了一些我没有预料到的事情。我尝试使用列表推导并将其全部排序在一个语句中,并得到了令人惊讶的结果。以下代码总结了我的一般用例,但针对这个问题进行了简化:
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方法就地对列表进行排序,然后返回None。