到目前为止, 大家应该对列表已经比较熟悉了: 列表是有序, 允许重复.

注意:这里的有序是指的元素的添加顺序和迭代顺序一致.

但是我如果想对列表中的元素按照一定的规则排序该怎么做?

每个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 接受的是怎样的参数,它最后都会返回一个列表。

Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""