排序我有一个字符串列表,其中每个字符串包含在第二部分datestring,如:高级列表与拉姆达
alist = ['foo_20150901', 'bar_20150801', 'baz_20150701']
现在我希望有命令他们对于上升的日期。我认为这样可以这样工作:
slist = alist.sort(key =(lambda k: int(k.split('_')[-1])))
但是,打印slist产生None
。这里有什么问题?
排序我有一个字符串列表,其中每个字符串包含在第二部分datestring,如:高级列表与拉姆达
alist = ['foo_20150901', 'bar_20150801', 'baz_20150701']
现在我希望有命令他们对于上升的日期。我认为这样可以这样工作:
slist = alist.sort(key =(lambda k: int(k.split('_')[-1])))
但是,打印slist产生None
。这里有什么问题?
查找为sort
的文档,它明确状态*到位 *和返回None
:
Docstring: L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
Type: method_descriptor
要回到你需要使用sorted
代替排序列表:
In [5]: sorted??
Docstring:
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customise the sort order, and the
reverse flag can be set to request the result in descending order.
Type: builtin_function_or_method
L.sort()
就地排序列表返回None
,你想要的sorted
功能:
排序(迭代器,钥匙=无,反转= FALSE)
返回一个包含从可迭代升序排列的所有项目一个新的列表。
slist = sorted(alist, key=lambda k: int(k.split('_')[-1]))
alist = ['foo_20150901', 'bar_20150801', 'baz_20150701']
alist.sort(key =(lambda k: int(k.split('_')[-1])))
print alist
输出:
['baz_20150701', 'bar_20150801', 'foo_20150901']