如何在 Python 中检查列表是否包含数字

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Python 中检查列表是否包含某个数字,重点是处理混合类型的列表。你将从探索混合类型列表开始,这种列表包含不同数据类型的元素,如整数、字符串和布尔值。

你将创建一个 mixed_list.py 文件,用一个混合类型列表填充它,并练习使用索引访问和修改其元素。这种实践经验将为你使用 any()isinstance() 等技术识别此类列表中的数字元素奠定基础,这些技术将在后续步骤中介绍。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/variables_data_types -.-> lab-559523{{"如何在 Python 中检查列表是否包含数字"}} python/numeric_types -.-> lab-559523{{"如何在 Python 中检查列表是否包含数字"}} python/type_conversion -.-> lab-559523{{"如何在 Python 中检查列表是否包含数字"}} python/for_loops -.-> lab-559523{{"如何在 Python 中检查列表是否包含数字"}} python/build_in_functions -.-> lab-559523{{"如何在 Python 中检查列表是否包含数字"}} python/data_collections -.-> lab-559523{{"如何在 Python 中检查列表是否包含数字"}} end

探索混合类型列表

在这一步中,你将学习 Python 中的混合类型列表。混合类型列表是包含不同数据类型元素的列表,例如整数、字符串和布尔值。了解如何处理混合类型列表对于在 Python 程序中处理多样化的数据至关重要。

首先,让我们创建一个混合类型列表。在 LabEx 环境中打开 VS Code 编辑器,并在 ~/project 目录下创建一个名为 mixed_list.py 的新文件。

## Create a mixed-type list
my_list = [1, "hello", 3.14, True]

## Print the list
print(my_list)

保存文件。现在,在终端中使用 python 命令执行脚本:

python ~/project/mixed_list.py

你应该会看到以下输出:

[1, 'hello', 3.14, True]

如你所见,列表 my_list 包含一个整数、一个字符串、一个浮点数和一个布尔值。

接下来,让我们使用索引访问混合类型列表的元素:

## Access elements of the list
first_element = my_list[0]
second_element = my_list[1]
third_element = my_list[2]
fourth_element = my_list[3]

## Print the elements
print("First element:", first_element)
print("Second element:", second_element)
print("Third element:", third_element)
print("Fourth element:", fourth_element)

将这些代码行添加到你的 mixed_list.py 文件中并保存。然后,再次运行脚本:

python ~/project/mixed_list.py

输出应该是:

[1, 'hello', 3.14, True]
First element: 1
Second element: hello
Third element: 3.14
Fourth element: True

你还可以修改混合类型列表的元素:

## Modify an element
my_list[0] = "new value"

## Print the modified list
print(my_list)

将这些代码行添加到你的 mixed_list.py 文件中并保存。再执行一次脚本:

python ~/project/mixed_list.py

现在的输出应该是:

['new value', 'hello', 3.14, True]

在这个例子中,我们将列表的第一个元素从整数改成了字符串。

混合类型列表很灵活,在各种情况下都很有用。但是,在对混合类型列表的元素执行操作时,要注意数据类型,以避免意外的错误。

结合使用 any()isinstance()

在这一步中,你将学习如何结合使用 any() 函数和 isinstance() 函数,来检查列表中是否至少包含一个特定类型的元素。在处理混合类型列表时,这种方法特别有用。

any() 函数会在可迭代对象(如列表)中的任何元素为真时返回 True,否则返回 Falseisinstance() 函数用于检查一个对象是否是指定类或类型的实例。

让我们创建一个 Python 脚本来演示这一点。在 VS Code 编辑器中,在 ~/project 目录下创建一个名为 any_isinstance.py 的新文件。

## Create a mixed-type list
my_list = [1, "hello", 3.14, True]

## Check if the list contains any integers
has_integer = any(isinstance(x, int) for x in my_list)

## Print the result
print("List contains an integer:", has_integer)

## Check if the list contains any strings
has_string = any(isinstance(x, str) for x in my_list)

## Print the result
print("List contains a string:", has_string)

## Check if the list contains any floats
has_float = any(isinstance(x, float) for x in my_list)

## Print the result
print("List contains a float:", has_float)

## Check if the list contains any booleans
has_bool = any(isinstance(x, bool) for x in my_list)

## Print the result
print("List contains a boolean:", has_bool)

保存文件。现在,在终端中使用 python 命令执行脚本:

python ~/project/any_isinstance.py

你应该会看到以下输出:

List contains an integer: True
List contains a string: True
List contains a float: True
List contains a boolean: True

在这个例子中,我们在 any() 函数内部使用了一个生成器表达式 (isinstance(x, int) for x in my_list)。如果元素 xint 类型的实例,这个生成器表达式会产生 True,否则产生 False。然后,any() 函数会检查这些值中是否有任何一个为 True

让我们修改列表,看看输出会如何变化。将 my_list 的第一个元素改为浮点数:

## Create a mixed-type list
my_list = [1.0, "hello", 3.14, True]

## Check if the list contains any integers
has_integer = any(isinstance(x, int) for x in my_list)

## Print the result
print("List contains an integer:", has_integer)

## Check if the list contains any strings
has_string = any(isinstance(x, str) for x in my_list)

## Print the result
print("List contains a string:", has_string)

## Check if the list contains any floats
has_float = any(isinstance(x, float) for x in my_list)

## Print the result
print("List contains a float:", has_float)

## Check if the list contains any booleans
has_bool = any(isinstance(x, bool) for x in my_list)

## Print the result
print("List contains a boolean:", has_bool)

保存文件并再次运行:

python ~/project/any_isinstance.py

现在的输出应该是:

List contains an integer: False
List contains a string: True
List contains a float: True
List contains a boolean: True

现在,列表中不包含任何整数,因此 has_integerFalse

这种技术对于验证列表的内容,或者根据列表中元素的类型执行不同的操作非常有用。

查找数值元素

在这一步中,你将学习如何从混合类型列表中查找并提取数值元素(整数和浮点数)。这需要遍历列表,并使用 isinstance() 函数来识别数值元素。

让我们创建一个 Python 脚本来演示这一点。在 VS Code 编辑器中,在 ~/project 目录下创建一个名为 find_numeric.py 的新文件。

## Create a mixed-type list
my_list = [1, "hello", 3.14, True, 5, "world", 2.71]

## Create an empty list to store numeric elements
numeric_elements = []

## Iterate through the list
for element in my_list:
    ## Check if the element is an integer or a float
    if isinstance(element, (int, float)):
        ## Add the element to the numeric_elements list
        numeric_elements.append(element)

## Print the list of numeric elements
print("Numeric elements:", numeric_elements)

保存文件。现在,在终端中使用 python 命令执行脚本:

python ~/project/find_numeric.py

你应该会看到以下输出:

Numeric elements: [1, 3.14, 5, 2.71]

在这个例子中,我们遍历了 my_list,并使用 isinstance(element, (int, float)) 来检查每个元素是整数还是浮点数。如果是,我们就将其添加到 numeric_elements 列表中。

让我们修改脚本,使其还能打印出数值元素的总和:

## Create a mixed-type list
my_list = [1, "hello", 3.14, True, 5, "world", 2.71]

## Create an empty list to store numeric elements
numeric_elements = []

## Iterate through the list
for element in my_list:
    ## Check if the element is an integer or a float
    if isinstance(element, (int, float)):
        ## Add the element to the numeric_elements list
        numeric_elements.append(element)

## Print the list of numeric elements
print("Numeric elements:", numeric_elements)

## Calculate the sum of the numeric elements
numeric_sum = sum(numeric_elements)

## Print the sum
print("Sum of numeric elements:", numeric_sum)

保存文件并再次运行:

python ~/project/find_numeric.py

现在的输出应该是:

Numeric elements: [1, 3.14, 5, 2.71]
Sum of numeric elements: 11.85

这展示了如何从混合类型列表中提取特定类型的元素,并对它们执行操作。这种技术在数据清理和预处理任务中非常有用。

总结

在这个实验中,你探索了 Python 中的混合类型列表,这种列表可以包含不同数据类型的元素,如整数、字符串、浮点数和布尔值。你学习了如何创建此类列表,如何使用索引访问其元素,以及如何修改列表中的元素。

本实验展示了如何打印整个列表和单个元素,体现了在单一列表结构中处理不同数据类型的能力。你还练习了更改特定索引处元素的值,进一步说明了 Python 中混合类型列表的灵活性。