是的。
如果列表的列表总是2个元素。使用like >运算符比使用sorted更快。在[(i[1], i[0]) if i[0]>i[1] else i for i in lst]
时间:
^{pr2}$
在你的例子中,你说你的列表有2到3个元素。所以你的排序函数是这样的。在def sort_few(lst):
if len(lst)==2:
if lst[0] > lst[1]:
return (lst[1], lst[0])
else:
return lst
else:
if lst[0] > lst[1]:
if lst[1] > lst[2]:
return (lst[2], lst[1], lst[0])
else:
return (lst[1], lst[2], lst[0])
elif lst[1] > lst[2]:
if lst[2] > lst[0]:
return (lst[0], lst[2], lst[1])
else:
return (lst[2], lst[0], lst[1])
elif lst[2] > lst[0]:
if lst[0] > lst[1]:
return (lst[1], lst[0], lst[2])
else:
return lst
时间:lst = [(1, 2, 3),
(1, 3, 2),
(2, 1, 3),
(2, 3, 1),
(3, 1, 2),
(3, 2, 1),
(1, 2, 3),
(1, 3, 2),
(2, 1, 3),
(2, 3, 1),
(3, 1, 2),
(3, 2, 1)]
%timeit [sort_few(i) for i in lst]
100000 loops, best of 3: 6.3 us per loop
%timeit [sorted(i) for i in lst]
100000 loops, best of 3: 7.32 us per loop
因此,如果列表中有2或3元素,使用sort_few比使用sorted更快。在