为什么调用 natsorted 不修改我的列表?
Why does calling natsorted not modify my list?
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.....]
我卡住了,请帮忙
natsorted
return是新排序的列表,并没有原地修改原来的列表。这意味着您应该使用:
filelist = natsorted(filelist)
获得 return 值。
试试这个:
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']
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.....]
我卡住了,请帮忙
natsorted
return是新排序的列表,并没有原地修改原来的列表。这意味着您应该使用:
filelist = natsorted(filelist)
获得 return 值。
试试这个:
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']