python列表用法之增、删、改、查【详解】

在Python中,有四种数据存储结构分别是列表、字典、元组、集合。它们都可以存放多个数据,但是在特点上也各有千秋。本篇文章我们着重来讲解一下最常见的列表。
我们都知道变量只能存放一个元素,这对元素的调用有了极大的限制,而列表就相当于一个大容器,可以存放N多个元素,程序可以使用相应的方法对整个列表的所有数据进行操作。这些元素可以是数字,字母、字符组成的字符串,也可以是任意的结构,比如列表、字典等。这其中的所有元素之间可以没有任何的关系,不必是同种数据类型。

创建列表对象

  1. 使用中括号[ ],元素之间用逗号“,”隔开
  2. 调用内置函数:list()
students = ['张三', '李四', ['Mike', 'Job']]
print(students)
print(type(students))

scores = list([98, '优秀', '良好', 59])
print(scores)
print(type(scores))

在这里插入图片描述

访问列表元素

获取列表中指定的元素

列表是有许的集合,所以我们要通过元素的索引来访问列表中的任意一个元素。这里要注意的是:在Python中,第一个列表元素的索引是0,第二个元素是1,第三个是2,以此类推。
以下代码来对列表的元素进行访问

students = ['张三', '李四', ['Mike', 'Job'], 99]
print(students[0], type(students[0]))
print(students[2], type(students[2]))
print(students[3], type(students[3]))
print(students[2][1], type(students[2][1]))
print(students[2][1].upper())

在这里插入图片描述
由此也可以看出,访问的列表元素的类型是存放前的类型,如果是嵌套的列表,由外到内逐层访问即可。另外访问到的元素可以调用相应的方法进操作。如果指定索引不存在,会抛出IndexError。

上面的代码访问的索引均为正数,那么可不可以为负数呢?

students = ['张三', '李四', ['Mike', 'Job'], 99]
print(students[-1])
print(students[-4])

在这里插入图片描述
将列表索引定为负数进行访问,最后一个元素索引为-1,倒数第二个为-2,以此类推。Python这种特殊的语法极大方便了我们访问最后一个元素,因为我们经常需要在不知道列表长度的情况下访问最后一个元素。

获取列表中指定元素的索引

students = ['张三', '李四', ['Mike', 'Job'], '张三', 99]
print(students.index('张三'))
print(students.index('张三', 1, 4))

在这里插入图片描述
上面的代码中,列表中有两个值为“张三”的元素,但是index()方法只能访问到第一个。如果指定元素不存在,抛出ValueError。在访问的元素后面加上范围,程序便只在指定的范围内进行查找。
注意:Python中的范围“下包上不包”,即范围为(1,4)指的是索引为1、2、3的元素。

用切片操作获取列表中的多个元素

切片操作语法格式
列表名[start : stop : step]

lst = [10, 20, 30, 40, 50, 60, 70, 80]
print(lst[2:6:1])
print(lst[2:6])  # step默认为1
print(lst[2:6:2])
print(lst[:6:1])  # start默认为0
print(lst[1::1])  # stop默认为最后一个

在这里插入图片描述
同样,切片操作里的step也可以为负数,这时切片的第一个元素默认为列表最后一个元素,切片的最后一个元素默认为列表的第一个元素。

lst = [10, 20, 30, 40, 50, 60, 70, 80]
print(lst[::-1])
print(lst[6:0:-2])

在这里插入图片描述

添加列表元素

在列表末尾添加

在列表中添加新的元素时,最简单的方式就是将元素附加到列表。给列表附加元素时,将它添加到列表末尾,添加后并没有创建新的列表,仅仅是将新的元素附加到了末尾。

  • 首先用到的是append()方法,该方法用于在列表的末尾添加一个元素。
lst = [10, 20, 30]
print('添加元素前:', lst, id(lst))
lst.append(40)
print('添加元素后:', lst, id(lst))
lst2 = [100, 90, 80]
lst.append(lst2)
print('将lst2作为一个元素添加:', lst, id(lst))

在这里插入图片描述
append()方法使动态创建列表易如反掌,比如我们可以先创建一个空的列表,用来存放用户输入的数据,然后将输入的每一个新值添加到末尾。

lst = []
lst.append('hello')
lst.append('world')
lst.append(99)
print(lst)

在这里插入图片描述

  • 在上上一个代码段中,我们最后将100,90,80三个元素以一个列表的形式加到了列表末尾,输出列表后仍然是以列表形式输出,而使用extend方法,就可以将lst2中的三个元素分别加入到lst后面。即extend()方法的作用是在列表的末尾一次性添加多个元素。
lst = [10, 20, 30]
lst2 = [100, 90, 80]
lst.extend(lst2)
print('将lst2中的元素逐一添加添加:', lst)

在这里插入图片描述

在列表任意位置添加

  • 前面介绍的两种方法,无论是一次性添加多少个元素,都是指定在原列表末尾添加,insert()方法可以在列表的任意位置添加一个元素。
lst = [10, 20, 30]
lst.insert(1, 15)
print(lst)

在这里插入图片描述

  • 既然可以在列表的末尾添加多个元素,那么就证明也可以在列表的任意位置添加多个元素,这时,我们就用到了上面讲过的切片操作。
lst = [10, 20, 30]
lst3 = [11, 22, 33]
lst[1:2] = lst3
print(lst)

在这里插入图片描述
观察可以发现,切片操作来实现的在任意位置添加多个元素,实际上就是将多个元素组成的列表替换掉切片选中的部分。实现的是一个替换的操作。

删除列表元素

讲过了列表元素的添加,那么我们自然想到的就是对列表元素的删除操作。在Python中,我们可以用remove()、pop()、del语句,clear()对元素进行删除。

  • remove()方法根据值删除元素,一次删除一个元素,该元素是已知的,并且如果列表中有多个该元素,只删除第一个;如果列表中不存在该元素则抛出ValueError。
lst = [10, 20, 30, 40, 50, 60, 70, 80]
print('删除前的列表:', lst)
lst.remove(20)  # 根据值删除元素
print('删除后的列表:', lst)

在这里插入图片描述

  • pop()方法根据索引删除元素,删除指定位置上的元素,如果指定的索引不存在时抛出IndexError,如果不指定元素时,默认删除列表中最后一个元素。
    另外,pop()方法删除一个元素后,还可以接着使用这个元素。
lst = [10, 20, 30, 40, 50, 60, 70, 80]
print('删除前的列表:', lst)
popped_lst = lst.pop(2)  # 根据索引删除元素
print('删除后的列表:', lst, '删除的元素是:', popped_lst)
lst.pop()  # 不指定索引,删除最后一个元素
print('不指定索引:', lst)

在这里插入图片描述

  • del语句也同样可以根据索引删除元素。
lst = [10, 20, 30, 40, 50, 60, 70, 80]
print('删除前的列表:', lst)
del lst[2]
print('删除后的列表:', lst)

在这里插入图片描述
pop()方法和del语句都可以根据索引删除元素,那究竟什么时候该用什么呢?下面是一个简单的判断标准:如果你要从列表中删除一个元素,并且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用pop()方法。
另外,del语句还有删除列表的作用。删除后列表将会不存在,再次调用时,会抛出NameError。

lst = [10, 20, 30, 40, 50, 60, 70, 80]
print('删除前的列表:', lst)
del lst
print('删除后的列表:', lst)

在这里插入图片描述

  • clear()方法用来清空列表
lst = [10, 20, 30, 40, 50, 60, 70, 80]
print('删除前的列表:', lst)
lst.clear()
print('删除后的列表:', lst)

在这里插入图片描述

  • 前面提到的remove(),pop(),del都是只删除一个元素,那么我们自然联想到了在添加多个元素时用到的切片操作,在删除元素时是不是也同样适用呢?
lst = [10, 20, 30, 40, 50, 60, 70, 80]
print('删除前的列表:', lst)
lst4 = lst[1:3]
print('切片后的列表:', lst4)
lst[1:3] = []
print('删除后的列表:', lst)

在这里插入图片描述

修改列表元素

修改列表元素的语法与访问列表元素的语法相似,想要修改列表中的元素,可以指定列表名和要修改的元素的索引,将新的值赋给指定的元素索引。

lst = [10, 20, 30, 40, 50]
print('修改前的列表:', lst)
lst[2] = 33
print('修改后的列表:', lst)

在这里插入图片描述
同样地,可以使用切片操作一次性修改多个元素。

lst = [10, 20, 30, 40, 50]
print('修改前的列表:', lst)
lst[1:3] = [90, 80, 70, 60]
print('修改后的列表:', lst)

在这里插入图片描述

有关列表的一些基本操作就讲到这里,比较琐碎,只有经常练习使用才能愈加熟悉。

猜你喜欢

转载自blog.csdn.net/hou_6006/article/details/122329466