Python学习笔记-2

151 阅读6分钟

第三章:列表简介

  • 列表 由一系列按特定顺序排列的元素组成

  • 在Python中,用方括号[]表示列表,并用逗号分隔其中的元素

>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> print(bicycles)     # 如果让Python将列表打印出来,Python将打印列表的内部表示,包括方括号
    ['trek', 'cannondale', 'redline', 'specialized']   

一、 访问列表元素

  • 列表是有序集合,因此要访问列表的任意元素,只需将该元素的位置(索引)告诉 Python即可

  • 要访问列表元素,可指出列表的名称,再指出元素的索引,并将后者放在方括号

在Python中,第一个列表元素的索引为0,而不是1,所以要访问列表的任何元素,都要将其位置减1

>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized'] 
>>> print(bicycles[1])    # 索引1
    cannondale            # 元素2
>>> print(bicycles[3])    # 索引3
    specialized           # 元素4

Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素

>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized'] 
>>> print(bicycles[-1])  #索引-1
    specialized          #倒数第一个元素

同理,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,依此类推

小练习:利用列表中的元素创建一条消息,My first bicycle was a xxx,且要求xxx的首字母大写

>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> message = f"My first bicycle was a {bicycles[2].title()}."
>>> print(message)
    My first bicycle was a Redline.

二、 修改、添加和删除元素

创建的大多数列表都是动态的,这意味着列表创建后,可以随着程序的运行增删元素

1. 修改列表元素

修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,只要对该列表元素进行重新赋值即可

>>> course = ["Chinese", "Math", "English"]
>>> print(course)
    ['Chinese', 'Math', 'English']
>>> course[0] = "Biology"   # 直接对列表元素进行重新赋值
>>> print(course)
    ['Biology', 'Math', 'English']

2. 在列表中添加元素

在Python中,有多种在已有列表中添加新元素的方式

a. 在列表末尾添加元素

在列表中添加新元素时,最简单的方式是将元素附加(append)到列表。给列表附加元素时,它将添加到列表末尾

>>> course = ["Chinese", "Math", "English"]
>>> print(course)
    ['Chinese', 'Math', 'English']
>>> course.append("Biology")   # 使用方法append()在末尾添加元素
>>> print(course)
    ['Chinese', 'Math', 'English', 'Biology']

b. 在列表中插入元素

使用方法insert()可在列表的任何位置添加新元素。需要指定新元素的索引

>>> course = ["Chinese", "Math", "English"]
>>> course.insert(1, "Biology")
>>> print(course)
    ['Chinese', 'Biology', 'Math', 'English']

方法insert()索引处插入元素,原先此位置上的元素及后面的元素均后移一个位置

3. 从列表中删除元素

可根据位置或值来删除列表中的元素,下面提供四种删除元素的方法

a. 使用del语句删除元素

如果知道要删除的元素在列表中的位置,可使用del语句

>>> course = ["Chinese", "Math", "English"]
>>> del course[1]   # 删除索引为1的元素
>>> print(course)
    ['Chinese', 'English']

缺点:使用del语句将值从列表中删除后,就无法再访问它了

b. 使用方法pop()删除元素

方法pop()删除列表末尾的元素,并让你能够接着使用它。术语弹出 (pop)源自 这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素

>>> course = ["Chinese", "Math", "English", "Biology"]
>>> print(course)
    ['Chinese', 'Math', 'English', 'Biology']
>>> popped_course = course.pop()    # pop()不带参数默认弹出列表的最后一个元素
>>> print(course)
    ['Chinese', 'Math', 'English']
>>> print(popped_course)
    Biology

c. 弹出列表中任何位置处的元素

可以使用pop()来删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可

>>> course = ["Chinese", "Math", "English", "Biology"]
>>> print(course)
    ['Chinese', 'Math', 'English', 'Biology']
>>> popped_course = course.pop(2)    # pop(2)表示弹出列表的第三个元素
>>> print(course)
    ['Chinese', 'Math', 'Biology']
>>> print(popped_course)
    English

d. 根据值删除元素

有时候,我们不知道要删除的值在列表中的位置,但如果知道要删除的值,可使用方法remove()

>>> course = ["Chinese", "Math", "English", "Biology"]
>>> print(course)
    ['Chinese', 'Math', 'English', 'Biology']
>>> too_difficult = "Math"
>>> course.remove(too_difficult)    
>>> print(course)
    ['Chinese', 'English', 'Biology']
>>> print(too_difficult)
    Math

此方法既能删除指定的值,而且还能保留删除值的信息

注:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来确保将每个值都删除

三、 组织列表

有时,我们创建的列表中,元素的排列顺序并不是我们想要的,需要以特定的顺序呈现,但有时也希望保持列表最初的排列顺序,下面就根据不同的要求提供相应的解决办法

1. 使用方法sort()对列表永久排序

>>> animals = ["dog", "elephant", "panda", "cat", "wolf", "sheep", "bear"]
>>> animals.sort()   # 按照字母顺序进行排序
>>> print(animals)
    ['bear', 'cat', 'dog', 'elephant', 'panda', 'sheep', 'wolf']
>>> animals.sort(reverse = True)   # 按照相反的字母顺序排序
>>> print(animals)
    ['wolf', 'sheep', 'panda', 'elephant', 'dog', 'cat', 'bear']

此方法对列表元素排列顺序的修改是永久性的

2. 使用函数sorted()对列表临时排序

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()

>>> animals = ["dog", "elephant", "panda", "cat", "wolf", "sheep", "bear"]
>>> print("Here is the original list:")
>>> print(animals)
    Here is the original list: ['dog', 'elephant', 'panda', 'cat', 'wolf', 'sheep', 'bear']
>>> print("Here is the sorted list:")
>>> print(sorted(animals))
    Here is the sorted list: ['bear', 'cat', 'dog', 'elephant', 'panda', 'sheep', 'wolf']
>>> print("Here is the original list again:")
>>> print(animals)
    Here is the original list again: ['dog', 'elephant', 'panda', 'cat', 'wolf', 'sheep', 'bear']
  • 调用函数sorted()后,列表元素的排列顺序并没有变。如果要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True

  • 在所有的值不都是小写时,按字母顺序排列要复杂些。决定排列顺序时,有多种解读大写字母的方式,要指定准确的排列顺序,比较复杂,这里暂时不做讨论

3. 倒着打印列表

要反转列表元素的排列顺序,可使用方法reverse()

>>> animals = ["dog", "elephant", "panda", "cat", "wolf", "sheep", "bear"]
>>> print(animals.reverse())
    ['bear', 'sheep', 'wolf', 'cat', 'panda', 'elephant', 'dog']
  • reverse()不是按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序

  • 方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,只需对列表再次调用reverse()即可

4. 确定列表的长度

使用函数len()可快速获取列表的长度

>>> animals = ["dog", "elephant", "panda", "cat", "wolf", "sheep", "bear"]
>>> len(animals)
    7

注意:Python计算列表元素数时从1开始,索引是从0开始,要注意区分

四、 使用列表时避免索引错误

刚开始使用列表时,经常会遇到一种错误,那就是索引错误

>>> course = ["Chinese", "Math", "English"]
>>> print(course[3])    # python中索引是从0开始,所以没有第四个元素,会发生报错
    Traceback (most recent call last):
     File "course.py", line 2, in <module>
      print(course[3])
    IndexError: list index out of range

发生索引错误却找不到解决办法时,可以尝试将列表或其长度打印出来,这样可以帮助我们更好的去找出错误原因

五、 小结

在本章中,我们学习了:

  • 列表是什么以及如何使用其中的元素

  • 如何定义列表以及如何增删元素

  • 如何对列表进行永久性排序

  • 如何为展示列表而进行临时排序

  • 如何确定列表的长度

  • 在使用列表时如何避免索引错误