操作各种 Python 内置对象

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

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

简介

在这个实验中,你将学习如何操作各种 Python 内置对象。Python 提供了一系列内置数据类型,如数字、字符串、列表和字典。掌握这些对象对于每个 Python 程序员来说都至关重要。

此外,通过实践练习,你将练习基本的 Python 操作,并学习如何有效地处理 Python 数字、字符串、列表和字典。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/numeric_types -.-> lab-132391{{"操作各种 Python 内置对象"}} python/strings -.-> lab-132391{{"操作各种 Python 内置对象"}} python/for_loops -.-> lab-132391{{"操作各种 Python 内置对象"}} python/lists -.-> lab-132391{{"操作各种 Python 内置对象"}} python/dictionaries -.-> lab-132391{{"操作各种 Python 内置对象"}} python/standard_libraries -.-> lab-132391{{"操作各种 Python 内置对象"}} python/data_collections -.-> lab-132391{{"操作各种 Python 内置对象"}} end

处理 Python 数字

Python 为数值运算提供了强大的支持。在编程中,数字是用于计算和表示数量的基本数据类型。本步骤将向你介绍 Python 中的基本数字操作,这对于在程序中执行各种数学运算至关重要。

基本算术运算

要开始处理 Python 数字,你首先需要打开一个 Python 交互式 shell。你可以在终端中输入 python3 来实现。Python 交互式 shell 允许你逐行编写和执行 Python 代码,这对于测试和学习非常有用。

python3

一旦进入 Python 交互式 shell,你就可以尝试一些基本的算术运算。Python 遵循标准的数学算术规则,例如运算顺序(PEMDAS:括号、指数、乘法和除法、加法和减法)。

>>> 3 + 4*5    ## 乘法的优先级高于加法,所以先计算 4*5,然后再加上 3
23
>>> 23.45 / 1e-02    ## 这里使用了科学记数法表示 0.01。执行除法运算得到结果
2345.0

整数除法

Python 3 处理除法的方式与 Python 2 不同。理解这些差异对于避免代码中出现意外结果至关重要。

>>> 7 / 4    ## 在 Python 3 中,普通除法返回一个浮点数,即使结果可能是整数
1.75
>>> 7 // 4   ## 整除(截断小数部分)会将商作为整数返回
1

数字方法

Python 中的数字有几个常被忽视的有用方法。这些方法可以简化复杂的数值运算和转换。让我们来探索其中一些:

>>> x = 1172.5
>>> x.as_integer_ratio()    ## 此方法将浮点数表示为分数,这在某些数学计算中很有用
(2345, 2)
>>> x.is_integer()    ## 检查浮点数是否为整数值。在这种情况下,1172.5 不是整数,所以返回 False
False

>>> y = 12345
>>> y.numerator    ## 对于整数,分子就是该数字本身
12345
>>> y.denominator    ## 对于整数,分母始终为 1
1
>>> y.bit_length()    ## 此方法告诉你用二进制表示该数字所需的位数,这在按位运算中很有用
14

当你需要执行特定的数值运算或转换时,这些方法特别有用。它们可以节省你的时间并使你的代码更高效。

当你完成对 Python 交互式 shell 的探索后,你可以通过输入以下内容退出:

>>> exit()

处理 Python 字符串

字符串是 Python 中最常用的数据类型之一。它们用于表示文本,可以包含字母、数字和符号。在这一步中,我们将探索各种字符串操作,这是在 Python 中处理文本数据的必备技能。

创建和定义字符串

要开始在 Python 中处理字符串,我们首先需要打开一个 Python 交互式 shell。这个 shell 允许我们逐行编写和执行 Python 代码,非常适合学习和测试。使用以下命令再次打开 Python 交互式 shell:

python3

shell 打开后,我们就可以定义一个字符串。在这个例子中,我们将创建一个包含股票代码的字符串。在 Python 中,字符串可以通过将文本用单引号 (') 或双引号 (") 括起来来定义。以下是我们定义字符串的方式:

>>> symbols = 'AAPL IBM MSFT YHOO SCO'
>>> symbols
'AAPL IBM MSFT YHOO SCO'

现在我们已经创建了一个名为 symbols 的字符串变量,并为其赋值。当我们输入变量名并按下回车键时,Python 会显示字符串的值。

访问字符和子字符串

在 Python 中,可以通过索引来访问字符串中的单个字符。索引从 0 开始,这意味着字符串的第一个字符的索引为 0,第二个字符的索引为 1,依此类推。Python 也支持负索引,其中 -1 表示最后一个字符,-2 表示倒数第二个字符,依此类推。

让我们看看如何访问 symbols 字符串中的单个字符:

>>> symbols[0]    ## 第一个字符
'A'
>>> symbols[1]    ## 第二个字符
'A'
>>> symbols[2]    ## 第三个字符
'P'
>>> symbols[-1]   ## 最后一个字符
'O'
>>> symbols[-2]   ## 倒数第二个字符
'C'

我们还可以使用切片来提取子字符串。切片允许我们通过指定起始索引和结束索引来获取字符串的一部分。切片的语法是 string[start:end],其中子字符串包含从起始索引到(但不包括)结束索引的字符。

>>> symbols[:4]    ## 前 4 个字符
'AAPL'
>>> symbols[-3:]   ## 最后 3 个字符
'SCO'
>>> symbols[5:8]   ## 从索引 5 到 7 的字符
'IBM'

字符串的不可变性

Python 中的字符串是不可变的,这意味着一旦创建了一个字符串,就不能更改其单个字符。如果你尝试修改字符串中的某个字符,Python 会引发错误。

让我们尝试更改 symbols 字符串的第一个字符:

>>> symbols[0] = 'a'    ## 这将导致错误

你应该会看到类似这样的错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

这个错误表明我们不能为字符串中的单个字符赋新值,因为字符串是不可变的。

字符串拼接

虽然我们不能直接修改字符串,但可以通过拼接来创建新的字符串。拼接是指将两个或多个字符串连接在一起。在 Python 中,我们可以使用 + 运算符来拼接字符串。

>>> symbols += ' GOOG'    ## 追加一个新的代码
>>> symbols
'AAPL IBM MSFT YHOO SCO GOOG'

>>> symbols = 'HPQ ' + symbols    ## 前置一个新的代码
>>> symbols
'HPQ AAPL IBM MSFT YHOO SCO GOOG'

重要的是要记住,这些操作会创建新的字符串,而不是修改原始字符串。原始字符串保持不变,新的字符串是由组合后的值创建的。

测试子字符串

要检查一个子字符串是否存在于一个字符串中,我们可以使用 in 运算符。如果在字符串中找到子字符串,in 运算符返回 True,否则返回 False

>>> 'IBM' in symbols
True
>>> 'AA' in symbols
True
>>> 'CAT' in symbols
False

注意,'AA' 返回 True,因为它存在于 "AAPL" 中。这是在较大字符串中搜索特定文本的一种有用方法。

字符串方法

Python 字符串有许多内置方法,允许我们对字符串执行各种操作。这些方法是与字符串对象关联的函数,可以使用点号表示法 (string.method()) 调用。

>>> symbols.lower()    ## 转换为小写
'hpq aapl ibm msft yhoo sco goog'

>>> symbols    ## 原始字符串保持不变
'HPQ AAPL IBM MSFT YHOO SCO GOOG'

>>> lowersyms = symbols.lower()    ## 将结果保存到一个新变量中
>>> lowersyms
'hpq aapl ibm msft yhoo sco goog'

>>> symbols.find('MSFT')    ## 查找子字符串的起始索引
13
>>> symbols[13:17]    ## 验证该位置的子字符串
'MSFT'

>>> symbols = symbols.replace('SCO','')    ## 替换子字符串
>>> symbols
'HPQ AAPL IBM MSFT YHOO  GOOG'

当你完成实验后,可以使用以下命令退出 Python shell:

>>> exit()

处理 Python 列表

列表是 Python 中的一种数据结构。数据结构是一种组织和存储数据的方式,以便能够高效地使用数据。列表非常通用,因为它们可以存储不同类型的项,如数字、字符串,甚至其他列表。在这一步中,我们将学习如何对列表执行各种操作。

从字符串创建列表

要开始处理 Python 列表,你首先需要打开一个 Python 交互式会话。这就像是一个特殊的环境,你可以立即在其中编写和运行 Python 代码。要启动这个会话,请在终端中输入以下命令:

python3

进入 Python 交互式会话后,我们将从一个字符串创建一个列表。字符串只是一个字符序列。我们将定义一个包含一些用空格分隔的股票代码的字符串。然后,我们将把这个字符串转换为一个列表。每个股票代码将成为列表中的一个元素。

>>> symbols = 'HPQ AAPL IBM MSFT YHOO GOOG'
>>> symlist = symbols.split()    ## 按空白字符分割字符串
>>> symlist
['HPQ', 'AAPL', 'IBM', 'MSFT', 'YHOO', 'GOOG']

split() 方法用于在有空白字符的地方将字符串拆分成多个部分。每个部分随后成为新列表中的一个元素。

访问和修改列表元素

和字符串一样,列表也支持索引。索引意味着我们可以通过元素的位置来访问列表中的单个元素。在 Python 中,列表中的第一个元素的索引为 0,第二个元素的索引为 1,依此类推。我们还可以使用负索引从列表末尾访问元素。最后一个元素的索引为 -1,倒数第二个元素的索引为 -2,依此类推。

与字符串不同的是,列表元素可以被修改。这意味着我们可以更改列表中某个元素的值。

>>> symlist[0]    ## 第一个元素
'HPQ'
>>> symlist[1]    ## 第二个元素
'AAPL'
>>> symlist[-1]   ## 最后一个元素
'GOOG'
>>> symlist[-2]   ## 倒数第二个元素
'YHOO'

>>> symlist[2] = 'AIG'    ## 替换第三个元素
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG']

遍历列表

通常,我们需要对列表中的每个元素执行相同的操作。我们可以使用 for 循环来实现这一点。for 循环允许我们逐个遍历列表中的每个元素,并对其执行特定的操作。

>>> for s in symlist:
...     print('s =', s)
...

运行这段代码时,你会看到列表中的每个元素都带有 s = 标签被打印出来。

s = HPQ
s = AAPL
s = AIG
s = MSFT
s = YHOO
s = GOOG

检查成员资格

有时,我们需要检查某个特定的项是否存在于列表中。我们可以使用 in 运算符来完成这个任务。如果该项在列表中,in 运算符返回 True;如果不在,则返回 False

>>> 'AIG' in symlist
True
>>> 'AA' in symlist
False
>>> 'CAT' in symlist
False

添加和删除元素

列表有内置的方法,允许我们添加和删除元素。append() 方法将一个元素添加到列表的末尾。insert() 方法在列表的特定位置插入一个元素。remove() 方法根据元素的值从列表中删除该元素。

>>> symlist.append('RHT')    ## 在末尾添加一个元素
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']

>>> symlist.insert(1, 'AA')    ## 在特定位置插入元素
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']

>>> symlist.remove('MSFT')    ## 根据值删除元素
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT']

如果你尝试删除列表中不存在的元素,Python 会引发错误。

>>> symlist.remove('MSFT')

你会看到类似这样的错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

我们还可以使用 index() 方法找到元素在列表中的位置。

>>> symlist.index('YHOO')
4
>>> symlist[4]    ## 验证该位置的元素
'YHOO'

排序列表

列表可以进行原地排序,这意味着原始列表会被修改。我们可以按字母顺序或逆序对列表进行排序。

>>> symlist.sort()    ## 按字母顺序排序
>>> symlist
['AA', 'AAPL', 'AIG', 'GOOG', 'HPQ', 'RHT', 'YHOO']

>>> symlist.sort(reverse=True)    ## 逆序排序
>>> symlist
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']

嵌套列表

列表可以包含任何类型的对象,包括其他列表。这被称为嵌套列表。

>>> nums = [101, 102, 103]
>>> items = [symlist, nums]
>>> items
[['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA'], [101, 102, 103]]

要访问嵌套列表中的元素,我们使用多个索引。第一个索引选择外部列表元素,第二个索引选择内部列表元素。

>>> items[0]    ## 第一个元素(即 symlist)
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>> items[0][1]    ## symlist 中的第二个元素
'RHT'
>>> items[0][1][2]    ## 'RHT' 中的第三个字符
'T'
>>> items[1]    ## 第二个元素(即 nums 列表)
[101, 102, 103]
>>> items[1][1]    ## nums 中的第二个元素
102

当你完成 Python 交互式会话的操作后,可以通过输入以下内容退出:

>>> exit()

处理 Python 字典

在 Python 中,字典是一种基础的数据结构。它们是键值对存储,这意味着你可以将一个值(值)映射到另一个值(键)。在处理具有自然键值关系的数据时,这非常有用。例如,你可能想将一个人的名字(键)映射到他们的年龄(值),或者就像我们在这个实验中看到的,将股票代码(键)映射到它们的价格(值)。

创建和访问字典

让我们从打开一个新的 Python 交互式会话开始。这就像进入一个特殊的环境,你可以逐行编写和运行 Python 代码。要启动这个会话,打开你的终端并输入以下命令:

python3

进入 Python 交互式会话后,你可以创建一个字典。在我们的例子中,我们将创建一个将股票代码映射到其价格的字典。以下是创建方法:

>>> prices = {'IBM': 91.1, 'GOOG': 490.1, 'AAPL': 312.23}
>>> prices
{'IBM': 91.1, 'GOOG': 490.1, 'AAPL': 312.23}

在第一行,我们创建了一个名为 prices 的字典,并为其分配了一些键值对。键是股票代码(IBMGOOGAAPL),值是相应的价格。第二行只是显示了 prices 字典的内容。

现在,让我们看看如何使用键来访问和修改字典中的值。

>>> prices['IBM']    ## 访问键 'IBM' 对应的值
91.1

>>> prices['IBM'] = 123.45    ## 更新现有值
>>> prices
{'IBM': 123.45, 'GOOG': 490.1, 'AAPL': 312.23}

>>> prices['HPQ'] = 26.15    ## 添加一个新的键值对
>>> prices
{'IBM': 123.45, 'GOOG': 490.1, 'AAPL': 312.23, 'HPQ': 26.15}

在第一行,我们访问与键 IBM 关联的值。在第二行和第三行,我们更新了键 IBM 对应的值,然后添加了一个新的键值对(HPQ,价格为 26.15)。

获取字典的键

有时,你可能想获取字典中所有键的列表。有几种方法可以做到这一点。

>>> list(prices)    ## 将字典的键转换为列表
['IBM', 'GOOG', 'AAPL', 'HPQ']

在这里,我们使用 list() 函数将 prices 字典的键转换为一个列表。

你还可以使用 keys() 方法,它会返回一个名为 dict_keys 的特殊对象。

>>> prices.keys()    ## 返回一个 dict_keys 对象
dict_keys(['IBM', 'GOOG', 'AAPL', 'HPQ'])

获取字典的值

同样,你可能想获取字典中的所有值。你可以使用 values() 方法来实现。

>>> prices.values()    ## 返回一个 dict_values 对象
dict_values([123.45, 490.1, 312.23, 26.15])

这个方法返回一个 dict_values 对象,其中包含 prices 字典中的所有值。

删除项

如果你想从字典中删除一个键值对,可以使用 del 关键字。

>>> del prices['AAPL']    ## 删除 'AAPL' 条目
>>> prices
{'IBM': 123.45, 'GOOG': 490.1, 'HPQ': 26.15}

在这里,我们从 prices 字典中删除了键为 AAPL 的键值对。

检查键是否存在

要检查一个键是否存在于字典中,可以使用 in 运算符。

>>> 'IBM' in prices
True
>>> 'AAPL' in prices
False

如果键存在于字典中,in 运算符返回 True,否则返回 False

字典方法

字典有几个有用的方法。让我们来看看其中的几个。

>>> prices.get('MSFT', 0)    ## 获取值,如果键不存在则返回默认值
0
>>> prices.get('IBM', 0)
123.45

>>> prices.update({'MSFT': 25.0, 'GOOG': 500.0})    ## 一次性更新多个值
>>> prices
{'IBM': 123.45, 'GOOG': 500.0, 'HPQ': 26.15, 'MSFT': 25.0}

get() 方法尝试获取与键关联的值。如果键不存在,它返回一个默认值(在这种情况下是 0)。update() 方法用于一次性更新字典中的多个键值对。

当你完成 Python 交互式会话的操作后,可以通过输入以下内容退出:

>>> exit()

总结

在这个实验中,你学习了如何处理各种 Python 内置对象。具体来说,你掌握了 Python 数字的操作及其方法,通过索引、切片和内置函数来操作字符串,创建和修改列表(包括排序和处理嵌套结构),并使用字典进行键值存储和检索。

这些基础技能是更高级 Python 编程的基石。经常练习这些操作将增强你对 Python 内置数据类型的熟悉程度。