pardon110
用下列方法就好了,如果想按照指定列排序,自定义回调list.sort(cmp=None, key=None, reverse=False) #py 2
list.sort(key=None, reverse=False) # py 3以元组列表为例,需要注意的是列表元素为可迭代序列,下面是按照第一列里面的数字大小排序l = [('frag_eroderd_10.png', 3282, 235, -50, 0),
('frag_eroderd_103.png',1181, 1652, -172.0),
('frag_eroderd_1.png', 2881, 1652, -172.0)]
def preg(el):
res = re.search(r'(?:[a-z]+_){1,}(?P<number>\d+).(?:png|jpg|gif)', el[0])
return int(res['number']) if res is not None else 0
l.sort(key=preg)
print(l)
# 效果如下
[('frag_eroderd_1.png', 2881, 1652, -172.0),
('frag_eroderd_10.png', 3282, 235, -50, 0),
('frag_eroderd_103.png', 1181, 1652, -172.0)]如果只是按列排,用一个lambda函数就可以了,下面是按第二列排序的效果l.sort(key=lambda x: x[1]) # 默认升序
l.sort(key=lambda x: x[1],reverse=True) # 降序