简介
在这个实验中,你将学习如何操作各种 Python 内置对象。Python 提供了一系列内置数据类型,如数字、字符串、列表和字典。掌握这些对象对于每个 Python 程序员来说都至关重要。
此外,通过实践练习,你将练习基本的 Python 操作,并学习如何有效地处理 Python 数字、字符串、列表和字典。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
在这个实验中,你将学习如何操作各种 Python 内置对象。Python 提供了一系列内置数据类型,如数字、字符串、列表和字典。掌握这些对象对于每个 Python 程序员来说都至关重要。
此外,通过实践练习,你将练习基本的 Python 操作,并学习如何有效地处理 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 交互式 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 代码。要启动这个会话,请在终端中输入以下命令:
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 代码。要启动这个会话,打开你的终端并输入以下命令:
python3
进入 Python 交互式会话后,你可以创建一个字典。在我们的例子中,我们将创建一个将股票代码映射到其价格的字典。以下是创建方法:
>>> prices = {'IBM': 91.1, 'GOOG': 490.1, 'AAPL': 312.23}
>>> prices
{'IBM': 91.1, 'GOOG': 490.1, 'AAPL': 312.23}
在第一行,我们创建了一个名为 prices
的字典,并为其分配了一些键值对。键是股票代码(IBM
、GOOG
、AAPL
),值是相应的价格。第二行只是显示了 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 内置数据类型的熟悉程度。