(1)sort()与sorted()
sort()
直接修改原始列表,而sorted()
则是返回一个新的已排序列表,不会修改原始列表。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 按索引位置进行了重新组合。