使用用户定义的函数在 Python 中对列表进行排序

Posted

技术标签:

【中文标题】使用用户定义的函数在 Python 中对列表进行排序【英文标题】:Sort List in Python using user defined function 【发布时间】:2018-06-15 08:32:22 【问题描述】:
sortedL1ist = [2343, 323, 34254, 49, 595]

arr = [2343, 323, 34254, 49, 595]
Like in c++ **:** sort(arr,arr+n,AB)

AB(int x, int y)

return (x%10)<(y%10) 

这个概念如何在python中实现,比如按照个位数字排序?

【问题讨论】:

不是每个懂 Python 的人都懂 C++。请您解释您的逻辑并给出预期的输出,包括minimal reproducible example。 【参考方案1】:

您可以将排序依据定义为 lambda 函数,例如

some_list = [2343, 323, 34254, 49, 595]
sorted_list = sorted(some_list, key=lambda x : x%10)
print(sorted_list)

输出

[2343, 323, 34254, 595, 49]

您可以使用类似这样的比较方法采用旧方法

def custom_compare(x, y):
    return x%10 - y%10

print(sorted(some_list, cmp=custom_compare))

这将为您提供相同的输出

注意这仅适用于 python 2.x 版本,key 是 python 3.x 中新的更好的方法

【讨论】:

以上是关于使用用户定义的函数在 Python 中对列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章

在python中以某列为分组对象还能对某列进行依次排序吗

如何编写自定义函数以在 python 中对数据帧进行排序和透视

在 Python 中对列表进行布尔测试

如何在 Python 中对元组列表列表进行平面映射? [复制]

如何在 python 中对装饰器工厂输入进行单元测试

在python中对数组列表进行分类