到目前为止, 大家应该对列表已经比较熟悉了: 列表是有序, 允许重复.
注意:这里的有序是指的元素的添加顺序和迭代顺序一致.
但是我如果想对列表中的元素按照一定的规则排序该怎么做?
每个list
实例都有有一个方法list.sort()
可以帮我们完成这个工作.
sort()
默认排序
sort()
默认对列表中的每个元素使用<
进行比较,小的在前,大的在后.
也就是默认是升序排列
nums = [20, 10, 4, 5, 3, 9]
nums.sort()
print(nums)
更改排序规则
比如, 列表中存储的是字符串, 大小写都有, 默认是按照字母表顺序来排列.
但是我们如果想忽略大小写的进行排列. 那么默认排序就无法满足我们的需求了
这个时候就需要用到key
这个参数
key
必须是一个函数, 则排序的时候, python 会根据这个函数的返回值来进行排序.
ss = ["aa", "Aa", "ab", "Ca", "da"]
def sort_rule(ele):
return ele.lower()
ss.sort(key=sort_rule)
print(ss)
更改为降序
默认, 添加规则之后都是使用的升序排列.
如果需要降序排列, 则需要另外一个关键字参数 reverse
意思是问, 是否反序, 只要给 True
就表示降序了, 默认是 None
ss = ["aa", "Aa", "ab", "Ca", "da"]
def sort_rule(ele):
return ele.lower()
ss.sort(key=sort_rule, reverse=True)
print(ss)
内置 sorted()
函数
与 list.sort
相反的是内置函数 sorted
,它会新建一个列表作为返回值。这个方法可以接受任何形式的可迭代对象作为参数,甚至包括不可变序列或生成器。而不管 sorted
接受的是怎样的参数,它最后都会返回一个列表。