一、对列表进行排序:java
(1)使用列表对象的sort()方法:python
列表对象提供了sort()方法用于对原列表中的元素进行排序。排序后原列表中的元素顺序将发生改变。改变对象的sort()方法的语法格式以下:linux
listname.sort(key=None,reverse=False)
#listname:表示要进行排序的列表。
#key:表示指定从每一个元素中提取一个用于比较的键(例如设置”key=str.lower“表示在排序时不区分字母大小写)
#reverse:可选参数,若是将其指定为True,则表示降序排列;若是为False,则表示升序排列,默认为升序排列。
grade=[74,90,78,84,98,62,75,82] print("原成绩:",grade) grade.sort() print("升 序:",grade) grade.sort(reverse=True) print("降 序:",grade)
使用sort()方法进行数值列表的排序比较简单,可是使用sort()方法对字符串列表进行排序时,采用的规则是先对大写字母排序,而后再对小写字母排序。若是不区分大小写对字符串列表进行排序,须要指定其key参数。数组
char=["Curry","Bome","deven","ansible"] print("原字符串顺序:",char) char.sort() print("默认大写字母优先排序:",char) #先对大写字母进行排序,而后再对小写字母进行排序。 char.sort(key=str.lower) print("不区分大小写字母排序:",char)
采用sort()方法对列表进行排序时,对中文的支持很差,排序的结果与咱们经常使用的音序排序法或者笔画排序法都不一致,若是须要实现对中文内容的列表排序,还须要从新编写相应的方法进行处理,不能直接使用sort()方法。app
(2)使用内置的sorted()函数实现:dom
再Python中,提供了一个内置的sorted()函数,用于对列表进行排序。使用该函数进行排序后,原列表的元素顺序不变。函数
sorted(iterable,key=None,reverse=False)
#iterable:表示要进行排序的列表名称
#key:表示指定从每一个元素中提取一个用于比较的键(例如,设置”key=str.lower“表示在排序时不区分字母大小写)
#reverse:可选参数,若是将其指定为True,则表示降序排列;若是为False,则表示升序排列,默认为升序排列。
num=[97,65,75,78,83,91,73,89] print("原序列:",num) num_as=sorted(num) print("升 序:",num_as) num_des=sorted(num,reverse=True) print("降 序:",num_des)
列表对象的sort()方法和内置sorted()函数的做用基本相同;不一样点是在使用sort()方法时,会改变原列表的元素排列顺序,而是用sorted()函数时,会创建一个原列表的副本,该副本为排序后的列表。测试
二、列表推导式:云计算
使用列表推导式能够快速生成一个列表,或者根据某个列表生成知足指定需求的列表。列表推导式一般有如下几种经常使用的语法格式。spa
(1)生成指定范围的数值列表,语法格式以下:
list = [Expression for var in range]
#list:表示生成的列表名称。
#Expression:表达式,用于计算新列表的元素。
#var:循环变量。
#range:采用range()函数生成的range对象。
import random randomnumber=[random.randint(10,100) for i in range(10)] print("生成的随机数为:",randomnumbe
(2)根据列表生成指定需求的列表,语法格式以下:
newlist = [Expression for var in list]
#newlist:表示新生成的列表名称
#Expression:表达式,用于计算新列表的元素
#var:变量,值为后面列表的每一个元素值
#list:用于生成新列表的原列表
commodity=[80,40,60] print("原商品的价格分别:",commodity) new_commodity=[int(i*0.5) for i in commodity] print("打五折后的价格为:",new_commodity)
(3)从列表中选择符合条件的元素组成新的列表,语法格式以下:
newlist = [Expression for var in list if condition]
#newlist:表示新生成的列表名称
#Expression:表达式,用于计算新列表的元素
#var:变量,值为后面列表的每一个元素值
#list:用于生成新列表的原列表
#condition:条件表达式,用于指定筛选条件
commodity=[6500,3000,5400,5800,4200] print("原商品列表:",commodity) sale=[ i for i in commodity if i>5000] print("价格高于5000的:",sale)
三、二维列表的使用:
二维列表中的信息以行和列的形式表示,第一个下标表明元素所在的行,第二个下标表明元素所在的列。
例如电影院的座位号,每排每列就是一个二维列表。
(1)直接定义二维列表:
在Python中,二位列表是包含列表的列表,即一个列表的每个元素又都是一个列表。
List=[[10,20,30,40,50], [11,21,31,41,51], [12,22,43,42,52], [13,23,33,43,53]] print(List)
(2)使用嵌套的for循环建立:
建立二位列表,可使用嵌套的for循环实现。
建立一个包含4行5列的二位列表。 arr = [] #建立一个空列表 for i in range(4): arr.append([]) #在空列表中再添加一个空列表 for j in range(5): arr[i].append(j) #为内层列表构建元素
print(arr) #外层循环控制行,内层循环控制列
(3)使用列表推导式建立:
使用列表推导式也能够建立二维列表,推荐使用这种方法建立二维列表。
使用列表推导式建立一个包含4行5列的二维列表 arr = [[j for j in range(5)] for i in range(4)]
print(arr)
建立二维数组后,能够经过如下语法格式访问列表中的元素:
listname[下标1][下标2]
#listname:列表名称
#下标1:表示列表中第几行,下标值从0开始,即第一行的下标为0.
#下标2:表示列表中第几行,下标值从0开始,即第一列的下标为0.
以上结果是访问第一行的第三列。
练习:使用嵌套的for循环将柳宗元的《江雪》分别横板和竖版输出
str1="千山鸟飞绝" str2="万径人踪灭" str3="孤舟蓑笠翁" str4="独钓寒江雪" verse=[list(str1),list(str2),list(str3),list(str4)] #定义一个二维表 print("横板") for i in range(4): #循环古诗得每一行 for j in range(5): #循环每一行的每列 if j==4: #若是是一行中的最后一个字 print(verse[i][j]) #换行输出 else: print(verse[i][j],end="") #不换行输出 verse.reverse() #对列表进行逆序排列 print("\n竖版") for i in range(5): #循环每一行的而每列 for j in range(4): #循环逆序排列后的第一行 if j==3: #若是是最后一行 print(verse[j][i]) #换行输出 else: print(verse[j][i],end="") #不换行输出
在上面的代码中,list()函数用于将字符串转换为列表;列表对象的reverse()方法用于对列表进行逆序排列,即将列表的最后一个元素移到第一个,倒数第二个元素移到第二个,以此类推。
四、元组:
元组(tuple)是Python中另外一个重要的序列结构,与列表相似,也是由一系列按特定顺序排列的元素组成,可是它是不可变序列,所以,元组也称为不可变的列表。
在形式上,元组的全部元素都放在一对括号()中,两个相邻元素使用逗号“,”分隔。在内容上,能够将整数、实数、字符串、列表、元组等任何类型的内容放入到元组中,而且在同一个元组中,元素的类型能够不一样,由于他们之间没有任何关系。
一般状况下,元组用于保存程序中不可修改的内容。
从元组和列表的定义上看,这两种结构比较类似。两者之间的主要区别为:元组是不可变序列,列表是可变序列。即元组中的元素不能够单独修改,而列表则能够任意修改。
(1)使用赋值运算符直接建立元组:
同其余类型的Python变量同样,建立元组时,也可使用赋值运算符“=”直接将一个元组赋值给变量。语法格式以下:
tuplename = (element1,element2,enelent3,...,element)
#tuplename:元组的名称
#element1,element2,enelent3,...,element 元组中的元素,个数没有限制
建立元组的语法与建立列表的语法相似,只是建立列表时使用的是“[ ]”,而建立元组时使用的时"( )"。
例如:如下都是合法的元组: num=(4,54,64,23) char=(“科比","乔丹","詹姆斯") untitle=('python',"java",["linux","云计算'])
在Python中,元组使用一对小括号将全部元素括起来,可是小括号并非必须的,只要将一组值用逗号分隔开来,Python就能够视其为元组。
若是建立的元组只包括一个元素,则须要在定义元组时,在元素的后面加一个逗号”,“,若是不加逗号,那么就是一个字符串。
verse1=("一片冰心在玉壶",) verse2=("一片冰心在玉壶") print(verse1) print(verse2)
(2)使用type()函数测试变量的类型。
verse1=("一片冰心在玉壶",) verse2=("一片冰心在玉壶") print("verse1的类型是:",type(verse1)) print("verse2的类型是:",type(verse2))