sort()方法 | sorted()函数 | __call__()方法 | Python

Posted 胡说八道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sort()方法 | sorted()函数 | __call__()方法 | Python相关的知识,希望对你有一定的参考价值。

#     sort()方法与sorted()函数的区别:
#     sort()方法是在原可迭代对象直接修改;
#     sorted()函数是返回一个新的可迭代对象;
# 例子:根据列表中哪个数据更靠近10来排序;
# 1.lambda()
>> list_first = [1,4,7,9,33,22,55,77]
>> list_first.sort(key=lambda x:abs(x-10))
>> print(list_first)
>> [9, 7, 4, 1, 22, 33, 55, 77]

>> list_second = [1,4,7,9,33,22,55,77]
>> sorted(list_second, key=lambda x:abs(x-10))
>> [9, 7, 4, 1, 22, 33, 55, 77]

# 2.自定义函数
>> def which_closed(x):
>>     return abs(x-10)
>> list_first = [1,4,7,9,33,22,55,77]
>> list_first.sort(key=which_closed)
>> print(list_first)
>> [9, 7, 4, 1, 22, 33, 55, 77]

# 3.类模拟函数 | __call__()
>> class WhichClosed(object):
>>     def __init__(self,select_num):
>>         self.select_num = select_num
>>     def __call__(self,x):
>>         return abs(x-self.select_num)
>> list_first = [1,4,7,9,33,22,55,77]
>> list_first.sort(key=WhichClosed(10))
>> print(list_first)
>> [9, 7, 4, 1, 22, 33, 55, 77]

# __call__()作用:使对象变成可调用接口
>> class WhichClosed(object):
>>     def __init__(self,select_num):
>>         self.select_num = select_num
>>     def __call__(self,x):
>>         return abs(x-self.select_num)
>> obj = WhichClosed(10)  # 实例化对象
>> obj(2)  # 对象加上小括号时,对象内部调用__call__()方法;
>> 8

 

以上是关于sort()方法 | sorted()函数 | __call__()方法 | Python的主要内容,如果未能解决你的问题,请参考以下文章

python中sort和sorted排序的相关方法

sorted()函数

[Python]sort与sorted高级技巧

python函数之sorted与sort

sort和sorted

python中sorted方法和列表的sort方法