Python sorted()vs .sort()用于目录列表

时间:2015-09-05 08:25:41

标签: python sorting directory

file_list = os.listdir(os.getcwd)
files = file_list.sort()

如果我有一个基于上面目录列表的列表,为什么有时候如果使用files.sort()函数返回NoneType但是使用sorted(files)函数返回目标排序?

2 个答案:

答案 0 :(得分:7)

list.sort()进行排序,而sorted(list)返回排序列表的副本。 这意味着.sort()将返回None,因为它没有返回,因此默认为None。如果您想保留原始列表,则使用sorted()非常有用,因为.sort()会破坏原始订单。

>>> my_list = [3, 1, 2]
>>> sorted_list = sorted(my_list)
>>> sorted_list
[1, 2, 3]
>>> my_list
[3, 1, 2]
>>> print my_list.sort()
None
>>> my_list
[1, 2, 3]

答案 1 :(得分:2)

list.sort()list的方法,并对其就地调用的列表进行排序,并且不会返回任何内容。

sorted(collection)接受任何可迭代的(它可以是列表,集合,元组,甚至是generator)并返回一个列表,其中包含按排序顺序排列的所有项目。

由于sorted(collection)可以处理任何迭代并返回一个列表,因此在链接方法调用或不能使用list.sort()时非常有用,例如在迭代字典中的项目时(这是一个元组):

dct = { "c": 1, "b": 3, "a": 7 }
for key, value in sorted(dct.items()):
    print("{} = {}".format(key, value))

在你的情况下,这并不重要,但我会选择

file_list = sorted(os.listdir(os.getcwd))
纯粹出于个人喜好(它占用的空间更少)。