为什么不修改我的列表?

2024-06-14 07:13:02 发布

您现在位置:Python中文网/ 问答频道 /正文

from natsort import natsorted

filelist=[]
filelist=os.listdir("C:\\Users\\Amit\\Downloads\\Compressed\\trainigVid")
natsorted(filelist)
print filelist

我得到以下输出

['1.avi', '10.avi', '11.avi', '12.avi', '13.avi', '14.avi', '15.avi',   '16.avi', '17.avi', '18.avi', '19.avi', '2.avi', '20.avi', '21.avi', '22.avi', '23.avi', '24.avi', '3.avi', '4.avi', '5.avi', '6.avi', '7.avi', '8.avi', '9.avi']

我希望这张单子能自然地按

[1.avi, 2.avi, 3.avi.....]

我卡住了,请帮帮我


Tags: fromimportosdownloadscompressedusers单子listdir
2条回答

试试这个:

import os

filelist = os.listdir("C:\\Users\\Amit\\Downloads\\Compressed\\trainigVid")
out = []

for s in sorted(filelist, key=lambda x:int(os.path.splitext(x)[0])):
    out.append(s)

print out

演示:

['1.avi', '2.avi', '3.avi', '4.avi', '5.avi', '6.avi', '7.avi', '8.avi', '9.avi', '10.avi', '11.avi', '12.avi', '13.avi', '14.avi', '15.avi', '16.avi', '17.avi', '18.avi', '19.avi', '20.avi', '21.avi', '22.avi', '23.avi', '24.avi']

natsorted返回新排序的列表,它不会就地修改原始列表。这意味着您应该使用:

filelist = natsorted(filelist)

获取返回值。你知道吗

相关问题 更多 >