Python列表实用操作大全

一、引言

在 Python 编程世界里,列表(List)堪称极为关键且常用的数据结构。它宛如一个井然有序的收纳盒,能容纳各式各样的数据类型,像数字、字符串,甚至嵌套其他列表都不在话下。对于刚接触 Python 的新手而言,掌握列表的基础操作,无疑是迈向高阶编程的重要开端。接下来,就让我们一同深入探索 Python 列表丰富多样的实用操作吧。

二、创建列表

(一)基本创建方式

创建列表的过程轻松简单,只需使用方括号[],并将各个元素用逗号隔开即可。比如:

my_list = [1, 2, 3, 'apple', 'banana']

在这个例子中,我们成功创建了一个融合整数与字符串的混合列表。

(二)创建空列表

若想创建一个空列表,有两种便捷方法。其一,直接使用一对空方括号:

empty_list = []

其二,借助list()函数来实现:

empty_list = list()

(三)使用列表推导式创建列表

列表推导式可谓创建列表的 “神兵利器”,兼具简洁与强大的特性。以创建包含 1 到 10 的平方数的列表为例,代码如下:

squares = [i**2 for i in range(1, 11)]

在这里,range(1, 11)生成了从 1 到 10 的整数序列,i**2对每个整数进行平方运算,最终这些平方值共同构成了新列表squares

三、访问列表元素

(一)通过索引访问

列表中的元素可通过索引精准访问,且索引从 0 开始计数。比如,要获取上述my_list中的首个元素(即整数 1),代码如下:

first_element = my_list[0]

若想访问最后一个元素,则可使用索引 – 1:

last_element = my_list[-1]

负数索引代表从列表末尾逆向计数,-2 表示倒数第二个元素,依此类推。

(二)切片操作

切片操作能助力我们获取列表的特定部分。其语法为list[start:stop:step],其中start是起始索引(包含该索引对应元素),stop是结束索引(不包含该索引对应元素),step为步长。举例来说,要获取my_list中从第二个元素到第四个元素(即2, 3, 'apple'),代码如下:

sub_list = my_list[1:4]

若省略start,切片将从列表开头起始;省略stop,则切片至列表末尾。例如,my_list[:3]获取的是前三个元素,my_list[2:]获取的是从第三个元素起至末尾的所有元素。当步长设为 2,如my_list[::2],则会获取列表中所有偶数索引位置的元素。

四、修改列表元素

(一)直接赋值修改

通过索引,能轻松对列表中的元素进行直接修改。比如,将my_list中的第三个元素(整数 3)修改为 300,代码如下:

my_list[2] = 300

(二)通过切片修改

利用切片,还能一次性修改多个元素。例如,把my_list中的第二个到第四个元素替换为['cherry', 'grape'],代码如下:

my_list[1:4] = ['cherry', 'grape']

需要留意的是,切片替换时,右侧列表的长度不必与切片的长度完全一致。

五、添加元素到列表

(一)使用 append 方法

append()方法用于在列表末尾增添一个元素。例如,向my_list中添加新元素'orange',代码如下:

my_list.append('orange')

(二)使用 insert 方法

insert()方法可在列表指定位置插入元素,语法为list.insert(index, element)。比如,在my_list的第二个位置插入'kiwi',代码如下:

my_list.insert(1, 'kiwi')

(三)使用 extend 方法

extend()方法能将一个可迭代对象(如另一个列表)的全部元素添加至当前列表末尾。例如,把列表[5, 6]的元素添加到my_list中,代码如下:

extra_list = [5, 6]
my_list.extend(extra_list)

这与my_list += extra_list的效果等同。

六、删除列表元素

(一)使用 del 语句

del语句可依据索引删除列表中的元素。比如,删除my_list中的第三个元素,代码如下:

del my_list[2]

也能通过切片删除多个元素,像del my_list[1:3],表示删除第二个到第三个元素。

(二)使用 remove 方法

remove()方法用于删除列表中首个指定值的元素。例如,删除my_list中的'cherry',代码如下:

my_list.remove('cherry')

若指定值在列表中不存在,将会引发ValueError错误。

(三)使用 pop 方法

pop()方法既能删除又能返回列表中指定索引位置的元素。若不指定索引,默认删除并返回最后一个元素。例如,删除并返回my_list中的第二个元素,代码如下:

popped_element = my_list.pop(1)

若指定索引超出范围,会触发IndexError错误。

七、列表常用方法

(一)count 方法

count()方法用于统计列表中指定元素出现的次数。比如,统计my_list'banana'出现的次数,代码如下:

count_banana = my_list.count('banana')

(二)index 方法

index()方法用于返回列表中指定元素首次出现的索引。例如,查找'apple'my_list中的索引,代码如下:

index_apple = my_list.index('apple')

若指定元素不在列表中,会引发ValueError错误。

(三)sort 方法

sort()方法用于对列表进行排序,默认采用升序排序。以包含整数的列表[3, 1, 4, 1, 5, 9]为例,排序代码如下:

num_list = [3, 1, 4, 1, 5, 9]
num_list.sort()

若要进行降序排序,可传递参数reverse=True,即num_list.sort(reverse=True)。倘若列表中包含不同类型且不支持比较操作的元素,将会引发TypeError错误。

(四)reverse 方法

reverse()方法用于反转列表中元素的顺序。例如,反转my_list,代码如下:

my_list.reverse()

(五)copy 方法

copy()方法用于创建列表的浅拷贝。例如:

new_list = my_list.copy()

浅拷贝意味着新列表与原列表中的元素相互独立,但如果列表中存在可变对象(如列表),这些可变对象在新、原列表中仍是共享状态。若需实现完全独立的深拷贝,可借助copy模块中的deepcopy函数。

(六)clear 方法

clear()方法用于清空列表中的所有元素,使列表变为空列表。比如,对my_list执行清空操作:

my_list.clear()

执行上述代码后,my_list将不再包含任何元素,即my_list变为[]

(七)与字符串操作相关的 join 方法

join()方法虽然主要属于字符串方法,但在与列表协同工作时,具有强大的功能。当我们有一个字符串列表时,可以使用特定的分隔符将列表中的字符串元素连接成一个字符串。例如,有字符串列表str_list = ['Hello', 'world'],使用空格作为分隔符连接这些元素:

result = ' '.join(str_list)

执行上述代码后,result的值为'Hello world' 。若使用逗号作为分隔符,则代码为','.join(str_list),此时result的值将变为'Hello,world'

(八)列表的比较操作

列表之间可以进行比较。比较规则是从左到右依次比较对应位置的元素,直到找到不同的元素进行比较得出结果。例如:

list1 = [1, 2]
list2 = [1, 3]
print(list1 < list2)  # 输出True

在上述例子中,list1list2的第一个元素相同,继续比较第二个元素,由于 2 小于 3,所以list1 < list2返回True。若list1 = [2, 2]list2 = [1, 3],则list1 > list2返回True,因为第一个元素 2 大于 1,后续元素无需再比较。

八、列表的遍历

(一)使用 for 循环遍历

使用for循环是遍历列表最常见的方式。例如,遍历my_list并打印每个元素,代码如下:

for element in my_list:
    print(element)

(二)使用索引和 while 循环遍历

借助索引与while循环也能实现列表遍历。例如:

index = 0
while index < len(my_list):
    print(my_list[index])
    index += 1

不过,相较而言,这种方式代码更为复杂,在 Python 中,for循环通常更为简洁高效。

九、总结

Python 列表是一种功能强大且极为灵活的数据结构。通过本文,我们全面学习了列表的创建、访问、修改、添加与删除元素的方法,以及列表常用方法和遍历方式。熟练掌握这些列表操作,将为编写 Python 程序筑牢根基,无论是处理简单的数据任务,还是投身复杂的项目开发,列表都将发挥不可或缺的作用。在后续学习进程中,我们还可进一步探究列表与其他 Python 数据结构的协同运用,以此提升编程效率与解决问题的能力。

类似文章

发表回复