file_list = os.listdir(os.getcwd)
files = file_list.sort()
如果我有一个基于上面目录列表的列表,为什么有时候如果使用files.sort()函数返回NoneType但是使用sorted(files)函数返回目标排序?
答案 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))
纯粹出于个人喜好(它占用的空间更少)。