file_list = os.listdir(os.getcwd)
files = file_list.sort()
如果我有一个基于目录如上面的清单列表,为什么它有时如果使用files.sort()函数,但预期排序返回返回NoneType使用排序(文件)功能?Python的排序()VS的.sort()的目录列表
file_list = os.listdir(os.getcwd)
files = file_list.sort()
如果我有一个基于目录如上面的清单列表,为什么它有时如果使用files.sort()函数,但预期排序返回返回NoneType使用排序(文件)功能?Python的排序()VS的.sort()的目录列表
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]
我不太了解评论。如果你确实想使用'.sort()'而不用分配它,并且调用'file_list'后只是调用'file_list.sort()',那么'sort()'将总是*返回'None' –
@conma293。因为它将被排序 –
但是,如果我调用files = file_list.sort()不会从本质上调用排序到位列表的副本并将其分配给文件? – conma293
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))
去纯粹是出于个人喜好的(它占用更少的空间)。
您可以发布一些您正在测试的示例目录列表吗? – stef