介绍
在 Python 中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作。在编程时,有时我们需要在类型之间转换值,以便以不同的方式操作值。例如,我们可能需要将数值与字符串连接起来,或者在初始化为整数值的数字中表示小数位。
本教程将指导您转换数字、字符串、元组和列表,并提供示例以帮助您熟悉不同的用例。
转换数字类型
在 Python 中,有两种数字数据类型:整数和浮点数或浮点数。有时您正在处理其他人的代码,需要将整数转换为浮点数,反之亦然,或者您可能会发现您一直在使用整数,而您真正需要的是浮点数。Python 具有内置方法,可让您轻松地将整数转换为浮点数以及将浮点数转换为整数。
将整数转换为浮点数
Python 的方法float()
将整数转换为浮点数。要使用此函数,请在括号内添加一个整数:
float(57)
在这种情况下,57
将转换为57.0
.
您也可以将其与变量一起使用。让我们声明f
为 equal to 57
,然后打印出新的浮点数:
f = 57
print(float(f))
Output57.0
通过使用该float()
函数,我们可以将整数转换为浮点数。
将浮点数转换为整数
Python 还有一个内置函数可以将浮点数转换为整数:int()
.
该int()
函数的工作原理与该float()
函数类似:您可以在括号内添加一个浮点数以将其转换为整数:
int(390.8)
在这种情况下,390.8
将转换为390
.
您也可以将其与变量一起使用。让我们声明b
为 equal to125.0
和c
as equal to 390.8
,然后打印出新的浮点数:
b = 125.0
c = 390.8
print(int(b))
print(int(c))
Output125
390
使用该int()
函数将浮点数转换为整数时,Python 会切断浮点数的小数和剩余数字以创建整数。即使我们可能想要将 390.8 取整为 391,Python 也不会通过该int()
函数执行此操作。
通过除法转换的数字
在 Python 3 中,相关商在除法时从整数转换为浮点数,尽管它们不在Python 2 中。也就是说,当您将 5 除以 2 时,在 Python 3 中您将得到一个浮点数作为答案 (2.5):
a = 5 / 2
print(a)
Output2.5
在 Python 2 中,由于您正在处理两个整数,因此您将收到一个整数作为您的答案,而不是:5 / 2 = 2
。阅读“ Python 2 与 Python 3:实际注意事项”以获取有关 Python 2 和 Python 3 之间差异的更多信息。
用字符串转换
甲串是一个或多个字符(字母,数字,符号)的序列。字符串是计算机程序中常见的数据形式,我们可能需要经常将字符串转换为数字或将数字转换为字符串,尤其是当我们接收用户生成的数据时。
将数字转换为字符串
我们可以通过使用该str()
方法将数字转换为字符串。我们将一个数字或一个变量传递到该方法的括号中,然后该数值将被转换为一个字符串值。
让我们先看看转换整数。要将整数转换12
为字符串值,您可以传入12
该str()
方法:
str(12)
在终端窗口中str(12)
使用python
命令在Python 交互式 shell 中运行时,您将收到以下输出:
Output'12'
数字 12 周围的引号表示该数字不再是一个整数,而是一个字符串值。
通过变量,我们可以开始看到将整数转换为字符串的实用性。假设我们想要跟踪用户的日常编程进度,并输入他们一次编写的代码行数。我们希望向用户显示此反馈,并将同时打印出字符串和整数值:
user = "Sammy"
lines = 50
print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")
当我们运行此代码时,我们收到以下错误:
OutputTypeError: Can't convert 'int' object to str implicitly
我们无法在 Python 中连接字符串和整数,因此我们必须将变量转换lines
为字符串值:
user = "Sammy"
lines = 50
print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")
现在,当我们运行代码时,我们会收到以下输出,祝贺我们的用户取得了进展:
OutputCongratulations, Sammy! You just wrote 50 lines of code.
如果我们希望将浮点数转换为字符串,而不是将整数转换为字符串,我们遵循相同的步骤和格式。当我们将一个浮点数传递给该str()
方法时,将返回一个浮点数的字符串值。我们可以使用浮点值本身或变量:
print(str(421.034))
f = 5524.53
print(str(f))
Output421.034
5524.53
我们可以通过连接一个字符串来测试以确保它是正确的:
f = 5524.53
print("Sammy has " + str(f) + " points.")
OutputSammy has 5524.53 points.
我们可以确定我们的浮点数已正确转换为字符串,因为连接执行没有错误。
将字符串转换为数字
可以使用int()
和float()
方法将字符串转换为数字。
如果您的字符串没有小数位,您很可能希望使用该int()
方法将其转换为整数。
让我们使用用户 Sammy 跟踪每天编写的代码行的示例。我们可能想用数学操作这些值来为用户提供更有趣的反馈,但这些值目前存储在字符串中:
lines_yesterday = "50"
lines_today = "108"
lines_more = lines_today - lines_yesterday
print(lines_more)
OutputTypeError: unsupported operand type(s) for -: 'str' and 'str'
因为这两个数值存储在字符串中,所以我们收到一个错误。-
减法操作数不是两个字符串值的有效操作数。
让我们修改代码以包含int()
将字符串转换为整数的方法,并允许我们对这些最初是字符串的值进行数学运算。
lines_yesterday = "50"
lines_today = "108"
lines_more = int(lines_today) - int(lines_yesterday)
print(lines_more)
Output58
该变量lines_more
自动为整数,在本例中等于数值 58。
我们还可以使用float()
方法代替方法将上面示例中的数字转换为浮点值int()
。58
我们将接收58.0
浮点数的输出,而不是接收 的输出。
用户 Sammy 以十进制值赚取积分
total_points = "5524.53"
new_points = "45.30"
new_total_points = total_points + new_points
print(new_total_points)
Output5524.5345.30
在这种情况下,将+
操作数与两个字符串一起使用是一个有效的操作,但它是连接两个字符串而不是将两个数值相加。所以,我们的输出看起来不寻常,因为它只是将两个值放在一起。
在使用该float()
方法执行任何数学运算之前,我们希望将这些字符串转换为浮点数:
total_points = "5524.53"
new_points = "45.30"
new_total_points = float(total_points) + float(new_points)
print(new_total_points)
Output5569.83
现在我们已经将两个字符串转换为浮点数,我们收到了添加45.30
到的预期结果5524.53
。
如果我们尝试将带有小数位的字符串值转换为整数,我们将收到一个错误:
f = "54.23"
print(int(f))
OutputValueError: invalid literal for int() with base 10: '54.23'
如果我们将字符串中的十进制值传递给该int()
方法,我们将收到一个错误,因为它不会转换为整数。
将字符串转换为数字使我们能够快速修改我们正在使用的数据类型,以便我们可以对最初转换为字符串的数字值执行操作。
转换为元组和列表
您可以使用方法list()
,并tuple()
传递给它们的值分别转换成列表,元组数据类型。在 Python 中:
转换为元组
让我们从将列表转换为元组开始。将列表转换为元组,因为它是一种不可变的数据类型,可以对我们创建的程序进行实质性优化。当我们使用该方法时tuple()
,它将返回传递给它的值的元组版本。
print(tuple(['pull request', 'open source', 'repository', 'branch']))
Output('pull request', 'open source', 'repository', 'branch')
我们看到在输出中打印了一个元组,因为项目现在包含在括号中而不是方括号中。
让我们使用tuple()
一个代表列表的变量:
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']
print(tuple(sea_creatures))
Output('shark', 'cuttlefish', 'squid', 'mantis shrimp')
同样,我们看到列表值更改为元组值,由括号表示。我们可以将任何可迭代类型转换为元组,包括字符串:
print(tuple('Sammy'))
Output('S', 'a', 'm', 'm', 'y')
因为我们可以遍历字符串,所以我们可以使用该tuple()
方法将它们转换为元组。但是,对于不可迭代的数据类型,例如整数和浮点数,我们将收到类型错误:
print(tuple(5000))
OutputTypeError: 'int' object is not iterable
虽然可以将整数转换为字符串,然后转换为元组,如在 中tuple(str(5000))
,但最好选择可读代码而不是复杂的转换。
转换为列表
当您需要该值的可变版本时,将值(尤其是元组)转换为列表会很有用。
我们将使用该list()
方法将以下元组转换为列表。因为创建列表的语法使用括号,所以一定要包括list()
方法的括号,在这种情况下也包括print()
方法:
print(list(('blue coral', 'staghorn coral', 'pillar coral')))
Output['blue coral', 'staghorn coral', 'pillar coral']
方括号表示已从通过该list()
方法传递的原始元组值返回一个列表。
为了使代码更具可读性,我们可以使用变量删除一对括号中的一对:
coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)
如果我们打印,list(coral)
我们将收到与上面相同的输出。
就像元组一样,字符串可以转换为列表:
print(list('shark'))
Output['s', 'h', 'a', 'r', 'k']
此处字符串'shark'
被转换为列表,提供原始值的可变版本。
结论
本 Python 教程演示了如何主要通过内置方法将几种重要的本机数据类型转换为其他数据类型。能够在 Python 中转换数据类型为您在编写程序时提供了额外的灵活性。