目录

  • 前言
    • ●  Python解释器安装
    • ●  PyCharm开发环境
  • Python程序设计实验
    • ●  实验1 IDLE与代码编写规范
    • ●  实验2 输入输出与数据类型
    • ●  实验3 字符串处理
    • ●  实验4 数据运算
    • ●  实验5 列表与元组应用
    • ●  实验6 字典与集合应用
    • ●  实验7 if语句与match语句
    • ●  实验8 使用循环语句
    • ●  实验9 异常处理
    • ●  实验10 函数应用
    • ●  实验11 类的应用
    • ●  实验12 模块应用
    • ●  实验13  应用re模块
    • ●  实验14 文件处理
    • ●  实验15 用户界面设计
    • ●  实验18 SQLite数据库应用
    • ●  理论考试模拟试题A
    • ●  理论考试模拟试题B
    • ●  理论考试模拟试题C
    • ●  理论考试模拟试题D
  • 学习参考
    • ●  01 Python及其IDLE环境
    • ●  02 Python代码规范
    • ●  03 常量和变量
    • ●  04 输入输出
    • ●  05 运算符
    • ●  06 数值类型
    • ●  07 字符串
    • ●  08 列表
    • ●  09 元组
    • ●  10 字典
    • ●  11 集合
    • ●  12 条件语句
    • ●  13 循环语句
    • ●  14 异常处理
    • ●  15 自定义函数
    • ●  16 内置函数
    • ●  17 模块导入与定义
    • ●  18 math模块
    • ●  19 os模块
    • ●  20 time模块
    • ●  21 random模块
    • ●  22 文本文件
    • ●  23 二进制文件
    • ●  24 类的创建和使用
    • ●  25 类的继承与多态
 08 列表

一、创建列表

1、使用方括号创建列表

   a=[]  #创建空列表

   a=[1,3,6,8]  #创建非空列表

2、创建类list的实例

   a=list()  #创建空列表

   a=list("abc")  #得到列表["a","b","c"]

3、使用推导式生成列表

   a=[x for x in range(6)] #等效于list(range(6))

   b=[3*x for x in a]

特别提示:

列表推导式的一般格式为:[A for x in B if C]

作用:对可迭代对象B中的每一个元素x,如果满足条件C,则按表达式A生成列表的一个元素。

4、使用字符串的split方法生成列表

   a="1,2,30,40"

   b=a.split(",")   #用逗号分割字符串为列表。b=["1","2","30","40"]

   c=a.split(",",2) #仅得到前2项,其余项为第3项。c=["1","2","30,40"]


二、列表的基本操作

1、索引和切片

(1)列表是序列,支持索引和切片。其操作请参考“字符串的索引和切片”。

示例:设a=[1,2,3,4],则:

通过索引读取列表项:b=a[0]+a[-1]  #b的值为5。

通过切片提取列表的元素:b=a[1:] #b的值为[2,3,4];c=a[1:3]的值为[2,3];a[::-1]的值为[4,3,2]。

(2)列表是可变对象,可通过索引或切片对列表部分项进行修改。

示例:设a=[1,2,3,4],则执行“a[1:3]=[7,8]后a的值为[1,7,8,4]。

2、列表的运算

(1)成员运算符(in、not in)

利用成员运算符可判断数据是否为列表的元素。如:2 in [1,2,3,4]的值为True;2 not in [1,2,3,4]的值为False。

(2)连接运算符(+)

连接运算符可实现二个列表的合并。如:a=[1,2]+[3,4],则a的值为[1,2,3,4]。

(3)重复操作符(*)

重复操作符可快速生成具有重复数据的列表。如:a=[1,2]*3,则a的值为[1,2,1,2,1,2]。

3、删除列表的元素

(1)利用del语句

示例:a=[1,2,3,4,5],则执行“del a[0::2]”后a的值为[2,4]。

(2)使用列表的内置函数pop

格式:pop(index)

作用:删除索引值为index的元素。如果index缺省,则删除最后一个元素。函数的返回值为删除的元素。如果index错误,则会触发异常。

示例:a=[1,2,3,4,5],则执行“x=a.pop()”后a的值为[1,2,3,4]、x的值为5。

(3)使用列表的内置函数remove

格式:remove(value)

作用:删除元素value。如果value不在列表中,则会触发异常。该函数没有返回值。如果列表中有多个元素的值为value,则删除左起第一个。

示例:a=[1,2,3,4,5,4],则执行“a.remove(4)”后a的值为[1,2,3,5,4]。

4、列表排序

(1)使用列表的内置函数sort

格式:sort(key=None,reverse=False)

    ---key可选,指定比较函数。

    ---reverse可选,为True降序,为False升序(默认值)。

    ---执行sort排序后,列表id不变,但元素顺序发生了变化。

示例:a=['21','43','35','16'],则执行“a.sort(key=int,reverse=True)”后a的值为['43', '35', '21', '16']。

(2)使用Python内置函数

格式:sorted(key,reverse)

    ---参数作用与sort相同。

    ---排序后,列表并没有变化,函数返回一个排序后的新列表。

示例:a=['21','43','35','16'],则执行“a= sorted(a,key=int,reverse=True)”后a的值为['43', '35', '21', '16']。


三、列表的内置函数

1、append(item):在列表末尾追加项item。

    a=[1,2,3,4]

    a.append(5)    #a=[1,2,3,4,5]

    b=[ [] ]*3          #b=[[ ],[ ],[ ]]

    b[0].append(1) #b=[ [1],[1],[1] ]

注意:通过*生成的列表,项是同一个。

2、count(item):统计项item在列表中出现的次数。

    a=[1,2,1,3,1,4],则a.count(1)的值为3

3、extend(t):在列表末尾添加多个值(t为列表)。

    a=[1,2,3]

    a.extend([4,5])   #a=[1,2,3,4,5]

4、index(value,start,stop):在索引值在start与stop的元素中查找元素value。

如果存在项,则返回第一个匹配项的索引。否则报ValueError异常。

    a=[1,2,1,3],则a.index(1)的值为0

可参考以下代码确定项是否存在,存在时输出项的索引,不存在时输出“No”:

if 4 in a:

    print(a.index(4))

else:

    print("No")

5、insert(index,item):在索引位置index插入项item。

    a=[1,2,3]

    a.insert(1,4)  #a=[1,4,2,3]

6、pop(index):移除索引位置index对应的项并返回移除项的值。

    a=[5,6,7,8]

    b=a.pop(1)  #移除索引为1的项。a=[5,7,8],b=6

    a.pop( )        #移除最后一项

7、remove(item):根据值item移除项。项不存在时报ValueError错误。

    a=[5,6,7,8]

    a.remove(6)    #a=[5,7,8]

8、reverse( ):将列表反向(逆序)。

    a=[1,2,3]

    a.reverse( )   #a=[3,2,1]

9、sort(key,reverse):排序。

参数key可选,指定排序的比较键。

参数reverse可选,为True降序,为False升序(为默认值)。

    a=[2,1,5,3]

则:执行“a.sort( )”后,a=[1,2,3,5]

10、clear( ):清空列表。

    a=[1,2,3],则执行“a.clear( )”后,a=[ ]

11、copy( ):创建列表副本

    a=[1,2,3]

    b=a.copy( )

说明:

----创建的副本ID与原列表的ID是不同的。

----c=a时c与a有相同的ID。


四、列表相关函数

1、len:返回列表项个数。如:

     a=[11,25,30,461],则len(a)的值为4

2、max:返回列表的最大值。要求列表元素类型相同。如:

     a=[21,4,9,11],则max(a)的值为21    

     a="How abcd a 12345"

     x=a.split(" ")

     s=max(x,key=len)   #以长度作为比较函数,求x的最大值

3、min:返回列表的最小值。要求列表元素类型相同。如:

     a=[21,4,9,11],则min(a)的值为4

4、list:将一个可迭代对象转为列表。如:

     a=list("abc"),则a=['a','b','c']

5、sorted:返回排序后的新列表。如:

     a=[2,5,1]

     b=sorted(a)   #b=[1,2,5]。注意!a=[2,5,1]


五、列表排序的几点说明

1、可由key参数指定排序的比较函数。如:

   a=["abc","de","12345"]

   a.sort(key=len)

   #“key=len”表示按长度排序。故a=["de","abc","12345"]

   a=["12","3","20"]

   a.sort()  #按字母顺序比较:a=["12","20","3"]

   a.sort(key=int)  #按转换后的数值比较:a=["3","12","20"]

2、元素为元组或列表时,不使用key参数,只能对元素的第一元素排序。如:

     a=[[2,1],[3,2],[1,3]]

     a.sort( )  #a=[1,3],[2,1],[3,2]]

3、可以使用key参数对组成列表元素的元组(或列表)按其他元素排序。如:

    x=[(3,1,2),(1,2,3),(4,3,1)]

    x.sort(key=lambda a:a[2])  #按元组的第3个元素排序

    print(x)         #x=[(4, 3, 1), (3, 1, 2), (1, 2, 3)]

    #lambda定义一个匿名函数,用作排序的比较函数。参考自定义函数部分。

4、利用key参数也可实现多重排序。如:

    a=[[5,4,3],[2,4,1],[3,1,6]]

    a.sort(key=lambda x:[x[1],-x[2])  #a=[[3,1,6],[5,4,3],[2,4,1]]

#运行效果:按项的第2个值升序、再按第3个值降序。