我有一个按x坐标排序的2D点列表。例如
l=[(1,2),(2,1),(4,2),(5,1),(6,7),(7,2)]
现在我想用y坐标对这个列表进行排序,但是,我们只说每三个元素。
这意味着
l=[(2,1),(1,2),(4,2),(5,1),(7,2),(6,7)]
我找不到这样的东西:
list.sort(startIndex,EndIndex, comparator)
在python中是这样的,或者我的问题是否有任何优雅的解决方案?
答案 0 :(得分:1)
您可以将sort和itertools.chain结合起来
from operator import itemgetter
from itertools import chain
l=[(1,2),(2,1),(4,2),(5,1),(6,7),(7,2)]
list(chain.from_iterable(sorted(l[i:i+3], key=itemgetter(1)) for i in range(0, len(l), 3)))
使用列表理解,您甚至可以避免使用链:
[x for y in (sorted(l[i:i+3], key=itemgetter(1)) for i in range(0, len(l), 3)) for x in y]