对Python列表中的项目进行排序

2024-05-23 15:49:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个采用以下参数的函数:

my_list:可以是空字符串、null、floats、int或str的值的列表

zero_val应该是第0项的值

比如:

my_sorter(my_list, zero_val):
    ...
    return my_sorted_list

带参数:

my_list = ["howdy", "ciao", "bonjour", "yo"]
zero_val = "bonjour"

因此,在本例中,应返回列表,并将“bonjour”作为第0项:

>>> my_list
>>> ["bonjour", "howdy", "ciao", "yo"]

Tags: 函数字符串列表参数myvalnulllist
3条回答

如果列表中只出现一次zero_val,那么解决方法非常简单

def my_sorter(my_list, zero_val):
    return sorted(my_list, key=lambda x: x != zero_val)

您可以使用^{}查找第一个匹配项,然后还可以进行切片,如:

代码:

def my_sorter(my_list, zero_val):
    i = my_list.index(zero_val)
    return [zero_val] + my_list[:i] + my_list[i+1:]

测试代码:

print(my_sorter(["howdy", "ciao", "bonjour", "yo"], "bonjour"))
print(my_sorter(["howdy", "ciao", "bonjour", "yo"], "howdy"))
print(my_sorter(["howdy", "ciao", "bonjour", "yo"], "yo"))

结果:

['bonjour', 'howdy', 'ciao', 'yo']
['howdy', 'ciao', 'bonjour', 'yo']
['yo', 'howdy', 'ciao', 'bonjour']

你可以试试这个:

def sorter(zero_val):

    my_list = ["howdy", "ciao", "bonjour", "yo"]

    new_list = [zero_val]

    new_list.extend([i for i in my_list if i != zero_val])

    return new_list

该算法在将zero\u val分配到新的\u列表的第一个位置后,通过删除zero\u val的所有实例来过滤我的\u列表,然后根据过滤后的列表扩展新的\u列表。你知道吗

相关问题 更多 >