21.Python从入门到精通—Python数据结构 列表 将列表当做堆栈使用 将列表当作队列使用 列表推导式 嵌套列表解析 del 语句

本文详细介绍了Python中的列表数据结构,包括其基本操作如索引、切片、append、insert、remove和pop。文章重点讲解了如何将列表用作堆栈和队列,以及列表推导式和嵌套列表解析的使用。此外,还涉及了del语句在删除变量、列表元素和字典键值对的应用。
摘要由CSDN通过智能技术生成

21.从入门到精通:Python数据结构 列表 将列表当做堆栈使用 将列表当作队列使用 列表推导式 嵌套列表解析 del 语句

Python数据结构

列表

在Python中,列表(list)是一种可变序列类型,可以存储任意数量的有序元素。列表中的元素可以是不同类型的,包括数字、字符串、列表等等。列表使用方括号([])表示,元素之间使用逗号(,)分隔。
下面是一个简单的列表示例:

my_list = [1, 2, 'three', [4, 5]]
  • 可以使用索引来访问列表中的元素,索引从0开始。例如,要访问上面列表中的第一个元素(值为1),可以使用以下代码:
   print(my_list[0])

可以使用切片来访问列表中的一部分元素,切片使用[start:end]的形式表示,其中start表示起始索引,end表示结束索引(不包括end位置的元素)。
例如,要访问上面列表中的前三个元素,可以使用以下代码:

print(my_list[:3])

可以使用append()方法向列表末尾添加元素,使用insert()方法在指定位置插入元素,使用remove()方法删除指定元素,使用pop()方法删除并返回指定位置的元素。例如,要向上面的列表中添加一个元素(值为6),可以使用以下代码:

my_list.append(6)
print(my_list)
输出结果为:[1, 2, 'three', [4, 5], 6]

需要注意的是,列表是可变对象,即可以在原地修改列表中的元素。例如,要将上面列表中的第一个元素(值为1)修改为10,可以使用以下代码:

my_list[0] = 10
print(my_list)
输出结果为:[10, 2, 'three', [4, 5], 6]

列表还支持许多其他的操作,例如排序、反转、计数等等。可以使用dir()函数查看列表支持的所有方法。

将列表当做堆栈使用

在Python中,列表可以很方便地用作堆栈数据结构。堆栈是一种后进先出(LIFO)的数据结构,可以使用append()方法将元素添加到堆栈的顶部,使用pop()方法从堆栈的顶部弹出元素。以下是一个示例,展示如何使用列表实现堆栈:

# 创建一个空列表作为堆栈
stack = []

# 将元素添加到堆栈的顶部
stack.append(1)
stack.append(2)
stack.append(3)

# 从堆栈的顶部弹出元素
top_element = stack.pop()
print(top_element)  # 输出 3
  • 在这个示例中,我们首先创建一个空列表stack作为堆栈。然后,我们使用append()方法将三个元素添加到堆栈的顶部。最后,我们使用pop()方法从堆栈的顶部弹出一个元素,并将其赋给变量top_element。我们使用print()函数将弹出的元素打印出来,输出结果为3。
  • 使用列表作为堆栈可以使代码更加简洁和易于理解。同时,Python的列表还具有其他强大的功能,例如切片、排序和迭代等,这使得它们成为一种非常灵活和实用的数据结构。

将列表当作队列使用

在Python中,可以使用列表(list)来实现队列(queue)的功能。队列是一种先进先出(FIFO)的数据结构,支持在队尾添加元素和在队头删除元素。列表可以使用append()方法在队尾添加元素,使用pop(0)方法在队头删除元素。下面是一个简单的队列示例:

my_queue = []

在队尾添加元素
my_queue.append(1)
my_queue.append(2)
my_queue.append(3)
在队头删除元素
print(my_queue.pop(0))
print(my_queue.pop(0))
print(my_queue.pop(0))
  • 在这个示例中,我们使用空列表my_queue来表示一个队列。使用append()方法向队尾添加元素,使用pop(0)方法从队头删除元素。可以看到,输出结果为1、2、3,符合队列的先进先出特点。
  • 需要注意的是,列表的pop(0)方法的时间复杂度为O(n),即随着列表长度的增加,删除操作的时间会变得越来越慢。如果需要高效地实现队列,可以使用collections模块中的deque类,它是一个双端队列,支持在队头和队尾快速添加和删除元素。

列表推导式

在Python中,列表推导式是一种非常方便的语法,用于从一个可迭代对象中创建一个新的列表。列表推导式可以让我们以一种简洁、优雅的方式创建新的列表,而不需要使用循环或其他复杂的语法结构。
以下是一个简单的示例,展示如何使用列表推导式创建一个包含平方数的新列表:

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  # 输出 [1, 4, 9, 16, 25]

在这个示例中,我们首先创建一个包含数字的列表numbers。然后,我们使用列表推导式创建一个新的列表squares,其中每个元素都是原列表中对应元素的平方。列表推导式的语法是在方括号中使用一个表达式,后跟一个for循环,用于迭代原列表中的每个元素。在本例中,我们使用x**2表示对x进行平方运算。

列表推导式还可以使用条件语句来过滤或转换原列表中的元素。以下是一个示例,展示如何使用条件语句过滤奇数并将偶数加倍:

numbers = [1, 2, 3, 4, 5]
filtered_numbers = [x*2 for x in numbers if x % 2 == 0]
print(filtered_numbers)  # 输出 [4, 8]
  • 在这个示例中,我们使用条件语句if x % 2 ==
    0来过滤原列表中的奇数。只有满足条件的偶数才会被加倍,并添加到新列表filtered_numbers中。

列表推导式是Python中一个非常强大和灵活的功能,可以帮助我们简化代码并提高效率。使用列表推导式可以使代码更加简洁和易于理解,同时还可以提高代码的可读性和可维护性。

嵌套列表解析

在Python中,可以使用嵌套列表解析(Nested List Comprehension)来创建嵌套列表。嵌套列表是指列表中包含其他列表,可以形成二维或多维数组。下面是一个简单的嵌套列表示例:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

这个示例中,我们创建了一个3x3的矩阵,其中每个元素都是一个整数。现在,假设我们想将这个矩阵中的每个元素都乘以2,可以使用嵌套列表解析来实现:

new_matrix = [[2 * x for x in row] for row in matrix]

这个嵌套列表解析中,外层的列表解析用于遍历矩阵中的每一行,内层的列表解析用于遍历每一行中的每个元素。在内层列表解析中,我们将每个元素乘以2,然后使用外层列表解析将结果存储到新的矩阵中。输出结果如下:

[[2, 4, 6], [8, 10, 12], [14, 16, 18]]

需要注意的是,嵌套列表解析可以嵌套任意层数的列表解析,可以用于创建任意维度的嵌套列表。但是,如果嵌套层数太多,可能会导致代码可读性降低,建议根据实际需求选择合适的嵌套层数。

del 语句

在Python中,del语句用于删除对象的引用,从而释放内存空间。del语句可以用于删除变量、列表中的元素、字典中的键值对等。以下是一些示例:

删除变量

x = 10
del x
print(x)  # NameError: name 'x' is not defined

在这个示例中,我们定义了变量x并将其赋值为10。然后,我们使用del语句删除变量x,并尝试使用print()函数输出x的值,这会引发NameError异常,因为变量x已经不存在了。

删除列表中的元素

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

在这个示例中,我们创建了一个包含四个元素的列表my_list。然后,我们使用del语句删除列表中的第三个元素(索引为2),并使用print()函数输出修改后的列表。

删除字典中的键值对

my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['b']
print(my_dict)  # {'a': 1, 'c': 3}
  • 在这个示例中,我们创建了一个包含三个键值对的字典my_dict。然后,我们使用del语句删除字典中键为’b’的键值对,并使用print()函数输出修改后的字典。

使用del语句可以帮助我们释放不再需要的内存空间,从而提高程序的性能和效率。但是,需要注意的是,使用del语句删除对象并不会立即释放内存空间,而是将其标记为可回收,在垃圾回收时才会被真正释放。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以山河作礼。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值