内置排序方法-sorted和sort

sorted(iterable, key=None, reverse=False) 和 reversed(iterable)函 数

可以处理任何可迭代对象,返回一个排序或反转的迭代器。

方法 list.sort(key=None, reverse=False) 和 list.reverse()只是列表的内置方法,对原列表操作无返回值。

s = [3, 6, 2, 7, 1, 9]
print(sorted(s)) # [1, 2, 3, 6, 7, 9]
print(s.sort()) # None
print(s) # [1, 2, 3, 6, 7, 9]
# TypeError: 'NoneType' object is not iterable,没返回值,报错
for n in word.reverse():
print(w)
# 9 1 7 2 6 3
for n in reversed(word):
print(n)

补充个 sorted 的用法,可以了解下sorded 的复杂用法:

# ['a', 'b', 'b', 'c'] 输出频率最高的前k个字符。O(NlogN)
def topKFrequent(self, words, k):
    dic = {}
    for word in words:
        dic[word] = dic.get(word, 0) + 1
    # 若 -dic[word] 相同,按word排序,题目要求同频率下按字母顺序排序
    ret = sorted(dic, key=lambda word: (-dic[word], word))
    return ret[:k]

sorted 返回重新排序的列表。

  • 第一个参数是 iterable,表示可迭代的对象,也是被排序的目标,直接传入字典的话相当于是 dict.keys(),想输出 value 的话要用 dict.values(),想输出全部的话要用 dict.items()。

  • 第二个参数是 key,key 是只接收一个参数的函数,一般用匿名函数 lambda,lambda 的语法是唯一的:

                其形式为 lambda argument_list: expression

    • 这里的 argument_list 是参数列表,这里的 expression 是一个关于参数的表达式,表达式中出现的参数需要在 argument_list 中有定义,并且表达式只能是单行的,所以 lamdba 的输入是传入到参数列表 argument_list 的值,输出是根据表达式 expression 计算得到的值。

    • 这里的 word 表示匿名函数的输入,其实就是前面 iterable 的每一个迭代对象,即字典中的每个 key(不指定 items()或 values()时默认指的是 key),(-dic[word], word)) 表示匿名函数的输出,即输出了一个元组,对这个元组进行排序,用元组是因为题目要求,如果出现频率相同的,要按照字母先后进行排序,所以-dic[word] 相同的情况下,根据 word 排序。

  • 第三个参数是 reverse,用来指定排序是倒序还是顺序,reverse=true 则是倒序,reverse=false 时则是顺序,默认 reverse=false。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值