排序题知识点总结

(1)sort()与sorted()

  1. sort() 直接修改原始列表,而 sorted() 则是返回一个新的已排序列表,不会修改原始列表。
  2. sort()没有返回值,是None,不能赋值给一个新的变量。例如:
    my_list = [3, 1, 2]
    my_list.sort()
    print(my_list)

    sorted() 返回一个已排序的新列表,并且不会修改原始列表。可以将返回的已排序列表赋值给另一个变量,例如:sorted_list = sorted(my_list)

根据实际情况来选择使用 sort 还是 sorted:如果需要保留原始列表的顺序或同时使用原始列表和已排序列表,那么应该使用 sorted。如果只需要对原始列表进行排序并且不关心原始顺序,那么可以使用 sort 以节省空间和时间。

(2)使用lambda排序的正序与反序

例子:

numbers = [5, 2, 9, 1, 7]
numbers.sort(key=lambda x: x, reverse=True)# 法①
# 法② numbers.sort(key=lambda x: -x)
print(numbers) 
# 输出:[9, 7, 5, 2, 1]

(3)zip与*(重组与拆分)

例子:

class Solution:
    def sortPeople(self, names: List[str], heights: List[int]) -> List[str]:
        idx = list(map(list, zip(names, heights)))
        idx.sort(key = lambda i:-i[1])
        names, heights = zip(*idx)
        return names

*:"unpacking(解包)"操作符。它可以用于将可迭代对象(如列表、元组、集合等)中的元素拆分成独立的元素。例如:

numbers = [1, 2, 3]
a, b, c = numbers

print(a, b, c)

输出结果为:

1 2 3

zip:将按索引位置将多个列表重新组合成一个元组的列表,每个元组包含了来自不同列表相同索引位置上的值。例如:

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]

zip_result = zip(names, ages)
print(list(zip_result))

输出结果为:

[("Alice", 25), ("Bob", 30), ("Charlie", 35)]

zip 将列表 names 和 ages 按索引位置进行了重新组合。

发表评论