GOOGLE Python大学教程之Python排序

谷歌代码大学 > 编程语言

最简单的方式进行排序的排序(列表)函数,它接受一个列表,并返回一个新的列表,这些元素排序顺序。不改变原来的列表。

  一个=  [ 5  1  4  3 ] 
  打印排序  ##[1,3,4,5] 
  打印一个   ##[5,1,4,3]

这是最常见的传递到sorted()函数的列表,但实际上它可以作为输入任何迭代的集合。老一辈的list.sort()就方法是一种替代,下面将详细介绍。排序()函数似乎更容易使用相比排序(),所以我建议使用排序()。

虽然是可选参数可以自定义排序()函数。排序()可选参数反向= TRUE,如排序(列表,反向= TRUE),使得它向后排序。

  可疑交易报告=  [ “AA”  “BB”  “ZZ”  “CC” 
  打印排序可疑交易报告  #[“BB”,“CC”,“AA”,“ZZ”](区分大小写)
  打印排序可疑交易报告反向= TRUE    #[“ZZ”,“AA”,“CC”,“BB”]

自定义排序问题的关键=

对于更复杂的自定义排序,排序()需要一个可选的“关键=”指定的“钥匙”功能,转换前比较每个元素。主要功能值1,返回值为1,并返回的“代理”的价值是使用内排序的比较。

例如,一个字符串列表指定键= LEN(内建的len()函数)按长度的字符串进行排序,从最短到最长。排序为每个字符串的len()调用代理的长度值的列表,并与这些代理值的排序。

  可疑交易报告=  [ 'CCC'  'AAAA'  'D'  'BB' ] 
  打印排序可疑交易报告关键= LEN   ##['D','BB','CCC','AAAA']

另一个例子是,指定“str.lower”作为主要功能,是一种强制排序对待大写和小写相同:

  ##“键”参数指定str.lower功能进行排序
  排序打印(可疑交易报告关键= STR   )#[“AA”,“BB”,“CC”,“ZZ” ]

您也可以通过在自己的MyFn键的功能,像这样的:

  ##说,我们有一个字符串列表,我们要排序的最后一个字母的字符串。
 = [“XC  ,“ZB  ,'码 ' ,'WA ' 

  ]#写一个小函数,它接受一个字符串,并返回其最后一个字母。
  ##这将是关键的功能(值1,返回值为1)。
  MyFn  DEF () 
    返回 [ - 1 

  ]#现在通过关键= MyFn排序( ) 的最后一个字母排序
  打印  排序##['WA',“ZB”,“XC”,“码” ]

使用key =自定义排序,记住,你提供了一个函数,它接受一个值,并返回代理的价值来指导排序。还有一个可选的参数,“CMP = cmpFn”排序()指定一个传统的比较函数两个参数,从列表中的两个值,并返回negative/0/positive,以表明其顺序。内置字符串,整数,在比较功能... ... CMP(A,B),所以往往你想在您的自定义比较CMP()调用。较新的一个参数键=排序一般是可取的。

sort()方法

作为替代排序(),sort()方法对列表排序,列表为升序,例如list.sort()就。sort()方法改变基础列表和返回None,所以这样使用它:

  alist 排序()             #正确
  alist = blist 排序()     ##没有不正确的,sort()的返回None

以上是很常见的误解与sort()的 - 它不会返回*排序的列表。sort()方法必须调用列表,它没有任何可枚举集合上工作(但排序()函数对任何作品以上)。sort()方法早sorted()函数,所以你可能会看到它在旧的代码。sort()方法不需要创建一个新的列表,这样就可以一点点的情况下更快的元素进行排序已经在列表中。

元组

一个元组是一个固定大小的分组元素,如(X,Y)的合作协调。元组名单一样,除非他们是不变的,不改变大小(元组不严格不可改变的自包含的元素之一是可变的)。元组发挥“结构”的角色,在Python的排序 - 一种方便的方式传递一点点的逻辑,固定的值大小捆绑。一个函数需要返回多个值,可以只返回一个值的元组。例如,如果我想有一个三维坐标列表,自然的Python表示将是一个元组的列表,其中每个元组大小为3组举行一次(X,Y,Z)。

要创建一个元组,只是在括号内用逗号分隔的的值列表。只是一个“空”的元组是一对空括号。访问一个元组中的元素,就像是一个列表 - LEN(),[],,,等所有的工作相同。

  元组=  1  2  “您好” 
  打印LEN 数组  ##3 
  打印的元组[ 2 ]     ##嗨
  元组[ 2 ]  =  '再见'   ##没有,元组可以不被改变
  元组=  1  2  “再见”   #工程

要创建一个大小为1的tuple,唯一的元素必须遵循的一个逗号。

  元组=  '您好'    #size - 1个元组

这是一个有趣的情况下,在语法,但逗号是必要的,以区别于普通情况下的括号中表达的元组。在某些情况下,可以省略括号和Python会从逗号,你打算一个tuple。

一个元组分配到一个相同大小的元组变量名,分配的所有相应的值。如果元组的大小是不一样的,它抛出一个错误。此功能为列出。

  Y Z  =  42  13  “加息” 
  打印Ž   #加息
  err_string err_code  =  foo ()  的#foo()返回一个长度为2元组

名单解析(可选)

列表内涵是一种更先进的功能,这是不错,但某些情况下是没有必要的练习和是不是你需要先学会(也就是说,你可以跳过这一节)。列表理解是一个紧凑的方式来写一个表达式,扩展到整个列表。假设我们有一个列表Nums的[1,2,3],这里是列表理解,计算出它们的平方[1,4,9]的列表:

  Nums的=  [ 1  2  3  4 ] 

  平方=  [ N * n的 对于 n Nums的   ##[1,4,9,16]

语法是[ VAR列表中的expr ] - 列表中的 VAR看起来像一个for循环的定期,但没有冒号(: )。其左侧 EXPR 是为每个元素给新列表值计算一次。下面是一个字符串,其中每个字符串更改为大写的例子 '!!!' 附加:

  可疑交易报告=  [ '你好'  '和'  '再见' ] 

  喊=  [ S UPPER () +  '!!!'  可疑交易报告] 
  ##['你好!!!',“!!” “再见!!!']

你可以添加一个测试,以for循环的权利,如果缩小的结果。如果测试是评估每个元素,包括只测试是真正的元素。

  #选择值<= 2 
  Nums的=  [ 2  8  1  6 ] 
  小=  [ N n Nums的,如果N <=  2  ]   ##[2,1] 

  #选择水果中含“A”,改变大写
  水果=  [ “苹果”  “樱花”  “bannana” ,“柠檬”  ] 
  afruits =  [秒 上部() 为 s 水果,如果 'A'  ] 
  ##[“苹果”,“BANNANA” ]

练习:list1.py

为了实践在本节中的材料,试图在后面问题list1.py使用排序和元组(基本练习 )。

你可能感兴趣的:(GOOGLE Python大学教程之Python排序)