python内置函数可以返回列表元组,python内置函数可以返回
Python list.sort方法和内置函数排序多次,我们得到一个列表后,这个列表不符合我们的需求。我们需要的是一份有特殊顺序的清单。
此时可以使用list.sort方法和内置函数sorted。本文介绍了list.sort方法和排序内置函数的用法和区别。
一、list.sort方法
list.sort方法将对列表进行就地排序,也就是说,它不会复制原始列表。这就是为什么这个方法的返回值是None,提醒你这个方法不会创建新的列表。
在这种情况下,返回None实际上是一个Python约定:如果函数或方法对对象进行了就地更改,它应该返回None,这样调用者就可以知道传递的参数已经更改,并且没有生成新的对象。
看一下代码:
# coding=UTF-8list _ a=[1,2,8,3,7,9,5,7] # sort()方法没有返回值list _ b=list _ a . sort()print( list _ a:,list _ a) print (list _ b)
List _ a: [1,2,3,5,7,7,8,9] list _ b: None返回None以指示就地更改的约定有一个缺点,即调用者不能将它们连接起来。返回新对象的方法正好相反。它们可以被链式调用,从而形成一个连贯的接口。
二、sorted内置函数
与list.sort相反,内置函数sorted创建一个新的列表作为返回值。
这个方法可以接受任何形式的iterable对象作为参数,甚至是不可变的序列或生成器。不管sorted接受什么样的参数,它最终都会返回一个列表。
代码示例:
List _ c=[1,2,8,3,7,9,5,7] #排序的内置函数将返回一个新的排序列表List _ d=Sorted(list _ c)print( list _ c:,list _ c) print (list _ d:,list _
List _ C: [1,2,8,3,7,9,5,7] List _ D: [1,2,3,5,7,7,8,9]可以看出,使用内置函数sorted时,返回一个新的列表,而原来的列表不变。
有两个好处:
1.如果我们需要同时使用原始列表和排序列表,或者如果我们想将一个不是列表的迭代对象排序到一个列表中,sorted可以做到。
2.当有返回值时,我们可以进行链式调用。
#列表str _ e= python list _ e=sorted(str _ e)print(list _ e)可以通过对不是列表的可迭代对象进行排序来生成#链调用str _ f=-。join (sorted (str _ e))。鞋帮()。拆分(“-”)打印
[h , N , O , P , T , y][H , N , O , P , T , Y]三、关键字参数key和reverse
无论是list.sort方法还是sorted函数,都有两个可选的关键字参数:
key:
接收只有一个参数的函数。这个函数将在序列中的每个元素上使用,结果将是排序算法所依赖的比较键。
例如,在对一些字符串进行排序时,可以使用key=str.lower通过忽略大小写进行排序,或者使用key=len通过字符串长度进行排序。key的缺省值是一个identity函数,即默认情况下元素按自己的值排序。
reverse:
如果设置为True,排序后的序列中的元素将按降序输出(即最大值按最小值排序),reverse的默认值为False。
Phone=(华为, OPPO , Mi ,魅族, vivo) #按长度排序phone _ list=sorted (phone,key=len)print(phone _ list)phone _ list _ re=sorted(phone,key=len,reverse=reverse)
[mi , oppo , vivo ,魅族,华为] [华为,魅族, oppo , vivo , mi]在上面的代码中,第一次排序创建一个新的按长度排序的字符串列表。第二种排序是将按长度排序由升序改为降序。
仔细看,你应该能发现第二个结果并不是第一个排序结果的完全反转。
OPPO和VIVO的长度都是4。reverse=True后,它们的相对位置与第一种排序相同。这是什么原因呢?
sorted和list.sort后面的排序算法是Timsort,这是一种自适应算法,根据原始数据的序列特征交替使用插入排序和返回边排序。
顺序,以达到最佳效率。
Python的排序算法Timsort是稳定的(就知道这个),也就是说即使两个元素大小不匹配,在每个排序结果中它们的相对位置也是固定的。
因为使用的排序算法是稳定的,也就是说长度相同时,OPPO和VIVO的相对位置不会发生变化。
关于list.sort()方法和排序内置函数的使用,现在已经掌握了~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。