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

原文地址:https://www.cnblogs.com/pymkl/p/8253528.html

时间: 2024-10-26 19:52:25

sort()方法 | sorted()函数 | __call__()方法 | Python的相关文章

python中sort和sorted函数小结

因为作者本人也是刚学python不久,在看python官方文档的时候看到了 Lambda 函数,其中使用sort函数的地方看的有些迷惑,所以就查找了一些关于sort和sorted函数的资料,在此整理到博客 L.sort(cmp=None, key=None, reverse=False) sorted(iterable, cmp=None, key=None, reverse=False) 这样看,sorted函数只比sort函数多一个iterable参数,其余没什么不同,iterable是一个

Python中sort以及sorted函数初探

sorted(...) Help on built-in function sorted in module __builtin__: sorted(...) sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list sort(...) Help on built-in function sort: sort(...) L.sort(cmp=None, key=None, reverse=False) -- s

python sort、sorted高级排序技巧

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorted()方法.它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序. 复制代码 代码如下: >>> sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5] 你也可以使用list.sort()方法来排序,此时list本身将被修改.通常此方法不如s

【python】 sort、sorted高级排序技巧

这篇文章主要介绍了Python中列表(List)的详解操作方法,包含创建.访问.更新.删除.其它操作等,需要的朋友可以参考下 Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorted()方法.它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序. >>> sorted([5, 2, 3, 1, 4]) [1, 2, 3

【转载】 python sort、sorted高级排序技巧

这篇文章主要介绍了python sort.sorted高级排序技巧,本文讲解了基础排序.升序和降序.排序的稳定性和复杂排序.cmp函数排序法等内容,需要的朋友可以参考下 Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1. 排序基础 简单的升序排序是非常容易的.只需要调用sorted()方法.它返回一个新的list,新的list的元素基于小于运算符(lt)来排序. >>> sorted([5, 2,

python中sort()与sorted()的区别

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列 一,最简单的排序 1.使用sort排序 my_list = [3, 5, 1, 4, 2] my_list.sort() print (my_list) #输出: [1, 2, 3, 4, 5] 使用sort()方法对list排序会修改list本身,不会返回新list. sort()不能对dict字典进行排序 2.使用sorted()排序 my_list = [

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

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorted()方法.它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序. >>> sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5] 你也可以使用list.sort()方法来排序,此时list本身将被修改.通常此方法不如sorted()方便,但

剑指offer第32题:把数组排成最小的数及关于list.sort()和sorted( Iterable object )函数的相关知识

* 解题思路: * 先将整型数组转换成字符数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关键就是制定比较规则. * 排序规则如下: * 若ab > ba 则 a > b, * 若ab < ba 则 a < b, * 若ab = ba 则 a = b: * 其中比较规则如下: 自定义比较规则:比较两个字符串s1, s2大小时,先将它们拼接起来,比较s1+s2,和s2+s1哪个大,若s1+s2大,则s2应该放前面,反之亦然. * 比如"3"&l

Python3:排序函数sort() 和 sorted() 之介绍

今天来讲一下Python中的排序函数.Python中有2个内建的排序函数,分别为sort() 和 sorted() 下面介绍分别介绍一下2个函数: 1.有一个列表 :a=[1,4,5,88,0,7],想要实现排序功能,可以使用sort() 和 sorted(): a.sort() #默认升序排列 print(a) 输出:[0, 1, 4, 5, 7, 88] a.sort(reverse=True) #reverse=True,降序排列.默认FALSE:升序: print(a) 输出:[88,