Python列表的创建与删除

6 阅读5分钟

一、前言

在 Python 中,列表(List) 是一种非常常用且功能强大的数据结构,支持动态修改和多种操作方式。它不仅可以存储多个元素,还支持增删改查等操作,是 Python 编程中使用频率最高的容器之一。

本文将从零开始,详细介绍 Python 中如何创建列表以及如何删除列表或其元素,并结合大量代码示例和实际应用场景,帮助你快速掌握列表的基本用法。

二、Python 列表简介

1. 什么是列表?

列表是一个有序、可变的数据集合,元素之间用逗号 , 分隔,整体用方括号 [] 括起来:

my_list = [1, 2, 3, 'hello', True]

  • 有序性:列表中的元素按照插入顺序排列。
  • 可变性:列表可以随时添加、删除、修改其中的元素。
  • 允许重复元素:同一个值可以在列表中出现多次。
  • 支持多种数据类型:字符串、整数、浮点数、布尔值、对象等都可以作为列表元素。

三、列表的创建方式(详细)

1. 使用字面量创建列表(最常用)

这是最常见的创建方式,语法简洁直观:

fruits = ['apple', 'banana', 'cherry']
numbers = [1, 2, 3, 4, 5]
mixed = [1, 'two', 3.0, True]

2. 使用 list() 构造函数创建列表

list() 可以将任意可迭代对象转换为列表,例如字符串、元组、集合、字典等:

s = list("hello")        # ['h', 'e', 'l', 'l', 'o']
t = list((1, 2, 3))      # [1, 2, 3]
set_list = list({1, 2, 3})  # 转换集合为列表,注意无序
dict_keys = list({'a': 1, 'b': 2})  # 字典默认转键为列表 → ['a', 'b']

3. 使用列表推导式创建列表(推荐进阶使用)

列表推导式是一种高效、优雅的创建方式,尤其适用于生成有规律的数据:

squares = [x**2 for x in range(5)]  # [0, 1, 4, 9, 16]
evens = [x for x in range(10) if x % 2 == 0]  # [0, 2, 4, 6, 8]

# 嵌套列表推导式
matrix = [[i * j for j in range(3)] for i in range(3)]
# 输出:
# [[0, 0, 0],
#  [0, 1, 2],
#  [0, 2, 4]]

4. 创建空列表

有时候我们需要先初始化一个空列表,后续再逐步添加元素:

empty_list = []
another_empty = list()

四、列表的删除操作详解

1. 删除整个列表变量

使用 del 关键字可以完全删除一个列表变量:

my_list = [1, 2, 3]
del my_list
print(my_list)  # 报错:NameError: name 'my_list' is not defined

⚠️ 注意:删除后该变量名不再存在,再次访问会引发异常。

2. 清空列表内容(保留变量)

如果你只是想清空列表中的所有元素,而不是删除变量本身,可以使用 .clear() 方法:

my_list = [1, 2, 3]
my_list.clear()
print(my_list)  # 输出:[]

3. 删除指定索引位置的元素

可以使用 del.pop(index) 来删除某个索引位置的元素。

使用 del

fruits = ['apple', 'banana', 'cherry']
del fruits[1]
print(fruits)  # ['apple', 'cherry']

使用 .pop()

.pop(index) 除了删除元素外,还会返回被删除的值:

fruits = ['apple', 'banana', 'cherry']
removed = fruits.pop(1)
print(removed)   # banana
print(fruits)    # ['apple', 'cherry']

如果不传入参数,默认删除最后一个元素:

last_item = fruits.pop()
print(last_item)  # cherry

4. 删除指定值的元素(不知道索引)

如果知道要删除的值,但不确定其索引,可以使用 .remove(value) 方法:

numbers = [10, 20, 30, 20, 40]
numbers.remove(20)
print(numbers)  # [10, 30, 20, 40]

⚠️ 注意事项:

  • .remove(value) 只会删除第一个匹配项。
  • 如果没有找到该值,会抛出 ValueError 异常。

你可以使用 if 判断避免异常:

if 50 in numbers:
    numbers.remove(50)
else:
    print("元素 50 不存在")

五、其他实用技巧与注意事项

1. 删除多个元素(切片删除)

可以通过切片的方式一次性删除多个元素:

nums = [0, 1, 2, 3, 4, 5, 6]
del nums[1:4]  # 删除索引1到3的元素
print(nums)  # [0, 4, 5, 6]

2. 删除重复元素(去重)

可以结合 set() 实现简单去重:

duplicates = [1, 2, 2, 3, 4, 4, 5]
unique = list(set(duplicates))
print(unique)  # [1, 2, 3, 4, 5] (注意顺序可能改变)

若需保持顺序:

from collections import OrderedDict
ordered_unique = list(OrderedDict.fromkeys(duplicates))
print(ordered_unique)  # [1, 2, 3, 4, 5]

3. 避免误删元素

在使用 .remove()del 时,请确保元素存在,否则程序会报错。建议使用条件判断:

if 'banana' in fruits:
    fruits.remove('banana')

六、总结对比表

操作方法特点
创建列表[]list(), 推导式灵活多样,适应不同场景
删除整个列表del list_name彻底删除变量,无法再访问
清空列表list_name.clear()保留变量名,清空所有元素
删除指定索引del list[index] / .pop(index)支持返回被删除值
删除指定值.remove(value)删除第一个匹配项,未找到会报错

七、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!