当在输入中给出键以决定排序是升序还是降序时,如何按第一个值对元组列表进行排序?

How to sort a list of tuples by the first value when a key is given in the input to decide whether the sort is ascending or descending?

我正在尝试根据输入中的顺序变量 'ascending' 或 'descending' 按升序或降序对元组列表进行排序。我尝试了类似下面的代码,但没有用。你能帮我改正吗?

示例输入:[(2.0, array([1., 0., 0.])), (1.0, array([0., 1., 0.])), (3.0, array( [0., 0., 1.]))]

[代码]

def sort_eigen_pairs(Ep, order = 'ascending'):

    if(order=='descending'):
        Ep = Ep.sort(reverse=True)

    else:
        Ep=Ep.sort()

    return Ep

您输入的 Ep 是一个元组列表。列表是可变的,这意味着当您应用函数时它们会自行改变并且没有 return 值。排序函数将自动只查看元组的第一个元素。解决方案是删除 Ep = 但请注意,这仅在您输入 Ep 始终是元组列表时才有效。

def sort_eigen_pairs(Ep, order = 'ascending'):

    if(order=='descending'):
        Ep.sort(reverse=True)

    else:
        Ep.sort()

    return Ep