1、Slide 1-1Python程序设计程序设计列表列表Slide 1-2Python程序设计程序设计列表列表程序往往需要存储大量的数据。程序往往需要存储大量的数据。Python提供了一种被称为列表的数据类型,提供了一种被称为列表的数据类型,它可以存储任意大小的、有序的数据集合它可以存储任意大小的、有序的数据集合Python列表的大小是可变的,可以根据需要增加或缩小列表的大小是可变的,可以根据需要增加或缩小Python中的列表是序列类型。一个列表是任何元素的序列。一个列表既可以中的列表是序列类型。一个列表是任何元素的序列。一个列表既可以包含同类型的元素也可以包含不同类型的元素包含同类型的元素也可
2、以包含不同类型的元素列表是可变列表是可变对象。一个对象。一个列表列表被被创建后创建后,可以可以直接修改直接修改列表列表中中的元素值的元素值2023-2-16Slide 1-3Python程序设计程序设计列表列表创建列表创建列表 list1=list()或者或者 list1=#创建空列表创建空列表 list2=list(2,3,4)或者或者 list2=2,3,4 list3=list(red,green,blue)或者或者 list3=red,green,blue list4=list(range(3,6)#3,4,5 list5=list(abcd)#a,b,c,d list6=2,thre
3、e,4.0列表中的元素用逗号分隔并且由一对中括号(列表中的元素用逗号分隔并且由一对中括号()括住)括住2023-2-16Slide 1-4Python程序设计程序设计列表列表列表使用列表使用Python内置函数内置函数list函数函数返回一返回一个个列表列表len函数返回列表的元素个数函数返回列表的元素个数max函数和函数和min函数分别返回一个函数分别返回一个列表(元素必须是相同类型)中列表(元素必须是相同类型)中的最大值元素的最大值元素和和最小值元素最小值元素sum函数函数返回一个列表(元素为数字)中返回一个列表(元素为数字)中所有元素的和所有元素的和还可以使用还可以使用random模块中
4、的模块中的shuffle函数随机排列列表中的元素函数随机排列列表中的元素2023-2-16Slide 1-5Python程序设计程序设计列表列表通过下标访问列表元素通过下标访问列表元素 list1=5.6,4.5,3.3,13.2,4.0,34.33,34.0,45.45,99.993,11123列表下标从列表下标从0开始,列表开始,列表list1的下标范围从的下标范围从0到到len(list1)-1,即,即0到到9通过:列表名通过:列表名下标下标,来,来访问列表访问列表中的元素中的元素。例如,例如,list10是列表是列表list1的第一个的第一个元素,而元素,而list19是列表是列表li
5、st1的最后一个元素的最后一个元素越界访问列表是常见的程序设计错误,会导致越界访问列表是常见的程序设计错误,会导致“IndexError”异常异常2023-2-16Slide 1-6Python程序设计程序设计列表列表Python允许使用负数作为下标来引用相对于列表末端的位置。将列表长度和允许使用负数作为下标来引用相对于列表末端的位置。将列表长度和负数下标相加就可以得到实际的位置负数下标相加就可以得到实际的位置2023-2-16Slide 1-7Python程序设计程序设计列表列表通过列表的切片操作可以获得列表的一个子列表通过列表的切片操作可以获得列表的一个子列表列表名列表名start:end
6、:step,默认情况下,默认情况下step为为1,返回返回下标从下标从start到到end-1的元素构的元素构成的一个子成的一个子列表列表start和和end可以省略。在这种情况下,可以省略。在这种情况下,start为为0,end为最后一个下标为最后一个下标2023-2-16Slide 1-8Python程序设计程序设计列表列表通过列表的切片操作可以获得列表的一个子列表通过列表的切片操作可以获得列表的一个子列表切片也可以使用负数下标切片也可以使用负数下标若若start大于或等于大于或等于end,将返回一个空表。若,将返回一个空表。若end指定了一个超出列表末尾的位指定了一个超出列表末尾的位置,
7、将使用列表长度替代置,将使用列表长度替代end2023-2-16Slide 1-9Python程序设计程序设计列表列表+、*运算符运算符使用使用+来连接两个列表来连接两个列表使用使用*来复制列表中的来复制列表中的元素元素2023-2-16Slide 1-10Python程序设计程序设计列表列表in、not in运算符运算符使用使用in或或not in来判断一个元素是否在列表中来判断一个元素是否在列表中is、is not运算符运算符使用使用is或或is not来判断两来判断两个个列表列表是否是否是同一个对象是同一个对象2023-2-16Slide 1-11Python程序设计程序设计列表列表比较
8、比较列表列表可以使用关系运算符对列表进行比较。进行比较的两个列表必须包含相同类型可以使用关系运算符对列表进行比较。进行比较的两个列表必须包含相同类型的元素的元素。对于。对于字符串列表比较使用的是字典顺序字符串列表比较使用的是字典顺序2023-2-16Slide 1-12Python程序设计程序设计列表列表遍历列表中的元素遍历列表中的元素通过下标来遍历列表通过下标来遍历列表通过使用简捷通过使用简捷for循环来遍历列表循环来遍历列表对于对于list1中中的每个元素的每个元素value,输出,输出它它如果要对一如果要对一个个列表列表既要既要遍历下标又要遍历元素时,可以用遍历下标又要遍历元素时,可以用
9、enumerate函数函数在每次循环中,在每次循环中,enumerate函数返回的是一个包含两个元素(下标和元素值)的函数返回的是一个包含两个元素(下标和元素值)的元组元组2023-2-16Slide 1-13Python程序设计程序设计列表列表列表解析列表解析一个列表解析由方括号组成。方括号内包含后跟一个一个列表解析由方括号组成。方括号内包含后跟一个for子句的表达式,之后是子句的表达式,之后是0或多个或多个for子句或子句或if子句。列表解析产生一个由表达式求值结果组成的列表子句。列表解析产生一个由表达式求值结果组成的列表2023-2-16Slide 1-14Python程序设计程序设计列
10、表列表列表方法列表方法列表实际上是对象,它自身包含了一些方法,可以用来操作列表列表实际上是对象,它自身包含了一些方法,可以用来操作列表append(x)方法,将元素方法,将元素x添加到列表的末尾添加到列表的末尾count(x)方法,返回元素方法,返回元素x在列表中的出现次数在列表中的出现次数extend(lst)方法,将列表方法,将列表lst的所有元素追加到列表的末尾的所有元素追加到列表的末尾2023-2-16Slide 1-15Python程序设计程序设计列表列表列表方法列表方法index(x)方法,返回元素方法,返回元素x在列表中在列表中首次出现首次出现的位置下标的位置下标insert(i
11、ndex,x)方法,将元素方法,将元素x插入到列表中插入到列表中index下标处下标处pop(index)方法,删除方法,删除index下标处的元素,并返回该元素。下标处的元素,并返回该元素。index是可选的,若没是可选的,若没有指定有指定index,则删除并返回列表中的最后一个元素,则删除并返回列表中的最后一个元素2023-2-16Slide 1-16Python程序设计程序设计列表列表列表方法列表方法remove(x)方法,删除列表中方法,删除列表中首次出现首次出现的元素的元素xreverse()方法,将列表中的所有元素逆序方法,将列表中的所有元素逆序2023-2-16Slide 1-1
12、7Python程序设计程序设计列表列表列表方法列表方法sort(key=None,reverse=False)方法,对列表中的所有元素升序(默认)或降序(方法,对列表中的所有元素升序(默认)或降序(reverse参数为参数为True)排序。若)排序。若key参数为一个函数名,则按该函数指定的规则进行参数为一个函数名,则按该函数指定的规则进行排序排序2023-2-16Slide 1-18Python程序设计程序设计列表列表sorted函数函数sort方法改变了列表中所有元素的顺序。方法改变了列表中所有元素的顺序。sorted函数则返回一个新的已排好序的列函数则返回一个新的已排好序的列表,原列表保
13、持不变。表,原列表保持不变。sort方法只能对列表进行排序,而方法只能对列表进行排序,而sorted函数可以对列表、字符串、元组等进行排函数可以对列表、字符串、元组等进行排序。序。sorted函数可以使用可选参数函数可以使用可选参数key和和reverse。2023-2-16Slide 1-19Python程序设计程序设计列表列表自定义排序自定义排序对列表中的每个单词,按它们的最后一个字母、它们包含的元音字母个数排序对列表中的每个单词,按它们的最后一个字母、它们包含的元音字母个数排序2023-2-16lastCharacter函数比较简单,没必要定义函数比较简单,没必要定义lastCharac
14、ter函数,函数,可以使用可以使用Lambda表达式来代替表达式来代替 替换为:替换为:Slide 1-20Python程序设计程序设计列表列表将字符串分解成列表将字符串分解成列表使用字符串对象提供的使用字符串对象提供的split方法,将字符串中的内容(默认以空白分隔)分解成方法,将字符串中的内容(默认以空白分隔)分解成列表列表2023-2-16Slide 1-21Python程序设计程序设计列表列表输入输入列表列表有时候,在一行中以空格分隔输入数据会更加方便,可以通过有时候,在一行中以空格分隔输入数据会更加方便,可以通过input函数读取一函数读取一个字符串,使用字符串对象提供的个字符串,使
15、用字符串对象提供的split方法,将字符串中的内容分解成列表,通方法,将字符串中的内容分解成列表,通过列表解析最后得到数字列表过列表解析最后得到数字列表2023-2-16Slide 1-22Python程序设计程序设计列表列表二维列表二维列表二维列表是将其他列表作为它的元素的列表,也称为嵌套列表二维列表是将其他列表作为它的元素的列表,也称为嵌套列表二二维列表可以理解维列表可以理解为一个由行组成的列表,每一行又是一个由值组成的列表。二维列表为一个由行组成的列表,每一行又是一个由值组成的列表。二维列表的每一行可以使用行下标访问,每一行中的值可以通过列下标访问的每一行可以使用行下标访问,每一行中的值
16、可以通过列下标访问2023-2-16二维列表中的每个值都可以用:列表名二维列表中的每个值都可以用:列表名行下标行下标列下标列下标来访问来访问Slide 1-23Python程序设计程序设计列表列表二维列表二维列表2023-2-16Slide 1-24Python程序设计程序设计列表列表二维列表二维列表可以使用可以使用sort方法或方法或sorted函数对一个二维列表排序。通过每一行的第一个元素进行排函数对一个二维列表排序。通过每一行的第一个元素进行排序;对于第一个元素相同的行,则通过它们的第二个元素进行排序;若行中的第一个序;对于第一个元素相同的行,则通过它们的第二个元素进行排序;若行中的第一
17、个和第二个元素都相同,则通过它们的第三个元素进行排序,以此类推和第二个元素都相同,则通过它们的第三个元素进行排序,以此类推2023-2-16Slide 1-25Python程序设计程序设计列表列表对象的引用对象的引用当创建一个对象后并把它赋给一个变量,这就建立了变量对对象的引用;若再当创建一个对象后并把它赋给一个变量,这就建立了变量对对象的引用;若再将变量赋给另一个变量,这就建立了第二个变量对对象的新引用。两个变量共将变量赋给另一个变量,这就建立了第二个变量对对象的新引用。两个变量共享引用同一个对象享引用同一个对象2023-2-16b=a之后,之后,b之前指向的列表将不再被引用,它就变成之前指
18、向的列表将不再被引用,它就变成了垃圾,所占用的内存空间将由了垃圾,所占用的内存空间将由Python自动回收并重新自动回收并重新使用使用Slide 1-26Python程序设计程序设计列表列表对象的引用对象的引用对象的引用是最低级的复制,对象的元素不受保护。即只引用对象本身,不包对象的引用是最低级的复制,对象的元素不受保护。即只引用对象本身,不包括对象的元素。因此两个变量共享引用同一个对象会引发关联性问题括对象的元素。因此两个变量共享引用同一个对象会引发关联性问题2023-2-16Slide 1-27Python程序设计程序设计列表列表浅复制浅复制浅复制会创建一个新的对象,并将原始对象中的元素逐
19、个复制过去浅复制会创建一个新的对象,并将原始对象中的元素逐个复制过去2023-2-16Slide 1-28Python程序设计程序设计列表列表深深复制复制浅复制保护了对象及其元素,但不会保护元素的下级元素浅复制保护了对象及其元素,但不会保护元素的下级元素2023-2-16这里将列表这里将列表a第第2个元素的第个元素的第0个元素值由个元素值由3改为改为777,列表列表b和和c都发生了关联性变动,列表都发生了关联性变动,列表d和和e也一样也一样借助于借助于copy模块中的模块中的deepcopy函数,实现深复制,避免函数,实现深复制,避免浅复制存在的浅复制存在的问题问题Slide 1-29Pyth
20、on程序设计程序设计列表列表将列表传递给函数将列表传递给函数当列表被传递给函数时,由于列表是可变对象,所以列表的内容可能会在函数当列表被传递给函数时,由于列表是可变对象,所以列表的内容可能会在函数调用后改变调用后改变2023-2-16当当m(x,y)被调用时,被调用时,x和和y的引用值被传递给的引用值被传递给number和和numbers。y和和nunbers都指向同一个列表对象,在都指向同一个列表对象,在m函函数数中中改变改变numbers的值就是改变的值就是改变y的值。的值。x和和nunber都都指向同一指向同一个个整数整数对象(值为对象(值为1),但),但number是不可变是不可变对象
21、,在对象,在m函数中改变函数中改变number的值,的值,number会指向新会指向新创建的整数对象(值为创建的整数对象(值为1001),而),而m函数外的函数外的x并没有并没有被改变,仍指向原来的整数对象(值为被改变,仍指向原来的整数对象(值为1)Slide 1-30Python程序设计程序设计列表列表从函数返回一个列表从函数返回一个列表当函数返回一个列表时,返回的是这个列表的引用值当函数返回一个列表时,返回的是这个列表的引用值列表作为函数默认列表作为函数默认参数参数2023-2-16#1,第一次,第一次调用调用add函数,参数函数,参数lst使用默认值使用默认值,这个,这个默认值默认值只会
22、被创建一次只会被创建一次。1添加到添加到lst中,中,lst为为1#2,第二次调用,第二次调用add函数,参数函数,参数lst使用默认值使用默认值1而不是而不是,2添加添加到到lst中,中,lst为为1,2#3,第三次调用,第三次调用add函数,给出了列表参数,参数函数,给出了列表参数,参数lst是是11,12,13,14,3添加添加到到lst中,中,lst为为11,12,13,14,3#4,第四次调用,第四次调用add函数,参数函数,参数lst使用默认值使用默认值1,2,4添加添加到到lst中,中,lst为为1,2,4Slide 1-31Python程序设计程序设计列表列表列表列表作为函数默认参数作为函数默认参数如果想要默认参数在每次函数调用时都是如果想要默认参数在每次函数调用时都是,可以使用,可以使用None2023-2-16每次每次add函数调用且没有列表参数时,都会创建一个新函数调用且没有列表参数时,都会创建一个新的空列表的空列表