在处理来自Google Python类的问题时,我通过使用来自Stack overflow的2-3个示例来制定以下结果 -
def sort_last(tuples):
return [b for a,b in sorted((tup[1], tup) for tup in tuples)]
print sort_last([(1, 3), (3, 2), (2, 1)])
Run Code Online (Sandbox Code Playgroud)
我昨天学习了List理解,所以对列表理解有所了解,但我很困惑这个解决方案是如何整体工作的.请帮我理解这个(功能第2行).
这种模式称为decorate-sort-undecorate.
(1, 3)成一个新的元组,并使用你想要排序的项目.(3, (1, 3))tupletuple确保原始中的第二个项目tuple首先排序.(3, (1, 3))到(1, 3)同时保持列表的顺序.在Python中,显式装饰几乎总是不必要的.相反,使用以下key参数sorted:
sorted(list_of_tuples, key=lambda tup: tup[1]) # or key=operator.itemgetter(1)
Run Code Online (Sandbox Code Playgroud)
或者,如果你想tuple对它的反转版本进行排序,无论它的长度如何:
sorted(list_of_tuples, key=lambda tup: tup[::-1])
# or key=operator.itemgetter(slice(None, None, -1))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2616 次 |
| 最近记录: |