谷歌代码大学 > 编程语言
最简单的方式进行排序的排序(列表)函数,它接受一个列表,并返回一个新的列表,这些元素排序顺序。不改变原来的列表。
一个= [ 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()方法对列表排序,列表为升序,例如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使用排序和元组(基本练习 )。