跳至主要内容

Python 空列表全指南

了解 Python 中空列表的关键操作及其使用场景。
· 5分钟 阅读

使用 AI 探索

Python 拥有灵活多样的数据结构,是开发者和数据科学家的强大工具。其中,列表因其动态特性和易用性而尤为重要。本文将深入讲解 Python 中的空列表,涵盖其创建方法、常见用例与相关操作,力求以清晰的步骤说明和实用示例帮助您掌握要点。

如果您想进一步了解该主题,请查看我们的完整 Python 列表教程。

简要答案:如何在 Python 中创建空列表

如果您时间紧张,在 Python 中创建空列表最直接的方法就是使用方括号 []。这种简洁的方法不仅容易记忆,也便于初始化列表以便后续操作。下面示例演示如何创建名为 my_list 的空列表,并向其追加(稍后会更详细介绍)单词“Python”和“Rocks”。

# Create an empty list called my_list
my_list = []
# Append the words 'Python' and 'Rocks' to it
my_list.append('Python')
my_list.append('Rocks')

# my_list is now ['Python', 'Rocks']

创建 Python 空列表:两种可用方法

虽然上面的简短部分介绍了使用方括号 [] 快速初始化空列表,但值得更深入地探讨这一技巧,以体会其优雅与高效。除此之外,Python 还提供了一种更为显式的替代方案,能够满足某些编码风格与清晰度方面的要求。

方法一:使用 [] 创建空列表

使用方括号 [] 创建空列表,体现了Python 的设计哲学:简洁与可读性。这是开展列表操作的干净直观的起点。下面是用 [] 初始化空列表的示例回顾:

# Initializing an empty list with square brackets
my_empty_list = []

方法二:使用 Python 内置的 list() 函数

另一种方式是调用内置函数 list()。当不传入任何参数时,它会返回一个空列表。该方法同样有效,但稍显冗长。在需要强调代码可读性与显式性的场景下尤为实用。示例如下:

# Create an empty list using the list() function
my_empty_list = list()

对空列表的常见操作

掌握如何操作空列表对于高效的 Python 编程至关重要。以下是您在处理空列表时一定会用到的一些关键操作。

使用 .append() 向空列表追加元素

如果无法向其中添加元素,空列表就没有太大用处。要在列表末尾添加一个元素,只需使用 .append() 方法。例如,这里我们先初始化一个空列表,然后将“Python”、“Rocks!”和“It’s easy to learn!”添加到列表 my_list 中。

# Initialize an empty list
my_list = []

# Append elements
my_list.append('Python')
my_list.append('Rocks!')
my_list.append('It’s easy to learn!')

# `my_list` is now ['Python', 'Rocks!', 'It’s easy to learn!']

使用 .insert() 在列表指定位置插入元素

.append() 的一个缺点是它只能在列表末尾添加元素——这意味着在使用 .append() 时,我们无法控制新元素的具体插入位置。而 .insert() 方法正好可以做到这一点。下面我们延续上一节的示例,在“Python”和“Rocks!”之间插入“Truly”。请注意,Python 采用从 0 开始的索引(zero-based indexing),也就是说列表第一个元素的索引为 0。详情请见示例:

# Initialize an empty list
my_list = []

# Append elements
my_list.append('Python')
my_list.append('Rocks!')
my_list.append('It’s easy to learn!')

# `my_list` is now ['Python', 'Rocks!', 'It’s easy to learn!']

# Showcase zero-based indexing in Python
my_list[0] # Returns 'Python'
my_list[1] # Returns 'Rocks'
my_list[2] # Returns 'It's easy to learn!'

# Use the .insert() method to insert ’Truly’ between ’Python’ and ’Rocks!’
my_list.insert(1, 'Truly')
# `my_list` is now ['Python', 'Truly', 'Rocks', 'It’s easy to learn!']

使用 .extend() 添加多个元素

虽然 .append() 和 .insert() 适合添加单个元素,但 .extend() 可以一次性添加多个元素。当您想合并两个列表,或无需遍历就添加一组元素时,这尤其方便。基于上一个示例,让我们为 my_list 再添加一些描述性词语,使句子更有趣:

# Reminder that `my_list` is ['Python', 'Truly', 'Rocks', 'It’s easy to learn!']

# Extend my_list with ['and', 'fun', 'to', 'use!']
my_list.extend(['and', 'fun', 'to', 'use!'])

# `my_list` is now ['Python', 'Truly', 'Rocks!', 'It’s easy to learn!', 'and', 'fun', 'to', 'use!']

在该示例中,.extend() 接收一个可迭代对象(如列表、集合或元组),并将其中每个元素追加到 my_list 的末尾,从而进一步扩展我们的句子。

使用 + 连接列表

另一种将一个列表的元素添加到另一个列表的方法是使用 + 运算符,它可以连接两个列表。该方法直观明了,不会修改原始列表,而是创建一个新列表。让我们把一个新列表与已有的 my_list 连接起来:

# Define a new list to concatenate
additional_words = ['Python is also', 'very versatile.']

# Concatenate lists using +
complete_sentence = my_list + additional_words

# `complete_sentence` now contains the elements of both lists
# `complete_sentence` is now ['Python', 'Truly', 'Rocks!', 'It’s easy to learn!', 'and', 'fun', 'to', 'use!', 'Python is also', 'very versatile.']

在该示例中,.extend() 接收一个可迭代对象(如列表、集合或元组),并将其中每个元素追加到 my_list 的末尾,从而进一步扩展我们的句子。

使用 .copy() 复制列表

当您希望在修改副本之前保留原始列表时,复制列表就很重要。.copy() 方法会创建列表的浅拷贝,即只复制列表本身,而不会深度复制其中的对象。让我们复制一下 my_list:

# Make a copy of `my_list`
my_list_copy = my_list.copy()

# Verify that `my_list_copy` is a separate object
assert my_list_copy is not my_list  # This will pass, confirming they are different objects

使用 .copy() 可确保对副本所做的更改不会影响原始列表。

使用 .clear() 清空列表

有时,您可能需要将列表重置为空状态,移除其中所有元素。.clear() 方法可直接在原列表上执行这一操作。让我们清空 my_list:

# Clear all elements from `my_list`
my_list.clear()

# `my_list` is now an empty list again
assert len(my_list) == 0  # This will pass, confirming the list is empty

.clear() 在需要复用或重置列表而不想新建列表对象的场景中尤其有用。

初始化 Python 空列表的常见用例

空列表在多种编程场景中都必不可少。理解其应用场景有助于显著提升编码效率与问题解决能力。

在空列表中动态存储数据

当数据的数量或类型难以预料时,空列表可以作为灵活的容器,用于动态累积信息。以一个读取用户输入直至满足特定条件的程序为例:我们事先并不知道会有多少次输入,通过使用 .append() 方法,就能将元素动态添加到列表 user_response 中。

# Initialize an empty list to store user input
user_responses = []

# Collect user input in a loop
while True:
    response = input("Enter your response (or type 'exit' to finish): ")
    if response.lower() == 'exit':
        break
    user_responses.append(response)

# User responses are now stored in `user_responses`

在 For 循环中将结果存入空列表

在使用循环时,空列表对于收集每次迭代生成的结果非常有用。下面的示例演示了如何在遍历 0 到 20 的范围时,将所有偶数存储起来。

# Initialize an empty list to store even numbers
even_numbers = []

# Loop through a range of numbers and store even ones
for number in range(21):  # Upper limit 21 to include 20 in the range
    if number % 2 == 0: # if remainder when divided by 2 =0, store it in empty list
        even_numbers.append(number)

# `even_numbers` now contains even numbers from 0 to 20

将函数输出存入空列表

在设计返回值可变的函数时,初始化并返回一个空列表,是优雅处理无结果情形的一种方式。比如,下面我们遍历一个单词列表,将以“A”开头的单词存入空列表。

def find_strings_starting_with_a(strings):
    # Initialize an empty list to store strings that start with 'A'
    strings_starting_with_a = []
    
    # Iterate over the input list and append strings that start with 'A' to `strings_starting_with_a`
    for string in strings:
        if string.startswith('A'):
            strings_starting_with_a.append(string)
    
    return strings_starting_with_a

# Example usage
result = find_strings_starting_with_a(['Assert', 'Import', 'Function', 'Array', 'Arguments'])

# 'result' will contain ['Assert', 'Array', 'Arguments']

结语

总之,熟练掌握空列表及其操作是 Python 编程的基础,能实现灵活多样的数据处理。通过追加、插入、扩展、连接、复制与清空等操作,我们展示了在实际场景中如何高效管理列表。这些基础技能是 Python 编码的基石,能帮助您更轻松、更有创造性地解决更复杂的问题。

您可以在我们的 Python 基础技能路径中,学习更多有关 Python 列表及许多其他实用函数的内容——立即开始吧!

Adel Nehme

作者

Adel Nehme

Adel 是一位数据科学教育者、演讲者,以及 DataCamp 的媒体副总裁。他推出了多门关于数据分析、机器学习和数据工程的课程与直播培训,热衷于在组织内推广数据技能与数据素养,并关注技术与社会的交汇。他拥有数据科学与商业分析硕士学位。闲暇时,您常能发现他陪他的猫 Louis 一起玩耍。

主题