通过固定第一个元素对列表进行自定义排序

2024-02-02

我有一个清单

[25, 35, 54, 70, 68, 158, 78, 11, 18, 12]

我想通过修复第一个元素来排序这个列表,即:如果我修复 35,排序列表应该看起来像

[35, 54, 68, 70, 78, 158, 11, 12, 18, 25]

如果我将 158 固定为第一个元素,则排序列表应如下所示

[158, 11, 12, 18, 25, 35, 54, 68, 70, 78]

基本上我想修复第一个元素,其余元素应该按排序顺序,如果找到小于第一个元素的数字,则它不应该在第一个元素之前。 Python 中有可用的内置函数吗?


只需定义一个关键函数,例如:

Code:

def sorter(threshold):
    def key_func(item):
        if item >= threshold:
            return 0, item
        return 1, item

    return key_func

这是通过返回一个元组来实现的,使得高于阈值的数字将排序在低于阈值的数字之下。

测试代码:

data = [25, 35, 54, 70, 68, 158, 78, 11, 18, 12]
print(sorted(data, key=sorter(70)))

Results:

[70, 78, 158, 11, 12, 18, 25, 35, 54, 68]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过固定第一个元素对列表进行自定义排序 的相关文章

随机推荐