python list sort函数,python sorted list

  python list sort函数,python sorted list

  

  相关免费学习推荐:python视频教程

  Python列表排序 list.sort方法和内置函数sorted

  很多时候当我们得到一份清单时,它并不符合我们的需求。我们需要的是一个特殊顺序的列表。

  此时可以使用list.sort方法和内置函数sorted。本文介绍了list.sort方法和排序内置函数的用法和区别。

  一、list.sort方法

  list.sort方法将对列表进行就地排序,也就是说,它不会复制原始列表。这就是为什么这个方法的返回值是None,提醒你这个方法不会创建新的列表。

  在这种情况下,返回None实际上是一个Python约定:如果函数或方法对对象进行了就地更改,它应该返回None,这样调用者就可以知道传递的参数已经更改,并且没有生成新的对象。

  看一下代码:

  #编码=utf-8

  list_a=[1,2,8,3,7,9,5,7]

  # sort()方法没有返回值。

  list_b=list_a.sort()

  打印( list_a: ,list_a)

  运行打印结果( list_b: ,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]

  # sorted内置函数返回一个新的排序列表。

  list_d=已排序(list_c)

  打印( list_c: ,list_c)

  运行打印结果( list_d: ,list_d):

  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)

  打印(列表_e)

  #连锁电话

  str_f=-。join(sorted(str_e))。鞋帮()。拆分(-)

  打印运行结果(str_f):

  [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 ,米,魅族, VIVO )

  #按长度排序

  phone_list=sorted(phone,key=len)

  打印(电话列表)

  phone_list_re=sorted(phone,key=len,reverse=True)

  打印运行结果(phone_list_re):

  [米, OPPO , VIVO ,魅族,华为]

  [华为,魅族, Oppo , Vivo , Mi]在上面的代码中,第一次排序创建了一个新的按长度排序的字符串列表。第二种排序是将按长度排序由升序改为降序。

  仔细看,你应该能发现第二个结果并不是第一个排序结果的完全反转。

  OPPO和VIVO的长度都是4。reverse=True后,它们的相对位置与第一种排序相同。这是什么原因呢?

  sorted和list.sort后面的排序算法是Timsort,这是一种自适应算法,根据原始数据的序列特征交替使用插入排序和返回边排序。

  顺序,以达到最佳效率。

  Python的排序算法Timsort是稳定的(就知道这个),也就是说即使两个元素大小不匹配,在每个排序结果中它们的相对位置也是固定的。

  因为使用的排序算法是稳定的,也就是说长度相同时,OPPO和VIVO的相对位置不会发生变化。

  关于list.sort()方法和排序内置函数的使用,现在已经掌握了~

  相关免费学习推荐:python教程(视频)

  以上是Python对list.sort方法和内置函数sorted的介绍细节。其他相关文章请多关注盛行的IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: