排序我有一個字符串列表,其中每個字符串包含在第二部分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']