Python数据类型转换教程

在这个Python教程中,您将借助代码示例处理原始和非原始数据结构的隐式和显式数据类型转换!
Python中的每个值都有一个数据类型。 数据类型是数据的分类,它告诉编译器或解释器您希望如何使用数据。 该类型定义了可以对数据执行的操作以及要在其中存储数据的结构。 在数据科学中,您经常需要更改数据类型,以便更容易使用和使用。

本教程将介绍一些重要且最常用的数据结构,您将学习如何根据需要更改其类型。 更具体地说,您将学习:

  • 隐式和显式数据类型转换
  • 原始数据结构与非原始数据结构
  • 整数和浮动转换
  • 带字符串的数据类型转换
  • 转换为元组和列表
  • Python中的二进制,八进制和十六进制整数

Python有许多数据类型。 您必须已经看过并与其中一些人合作过。 你有整数和浮点数来处理数值,boolean(bool)来处理true / false值和字符串来处理字母数字字符。 您可以使用列表,元组,字典和集合作为可以存储值集合的数据结构。 要了解有关它们的更多信息,请务必查看DataCamp的数据科学课程数据类型

Implicit and Explicit Data Type Conversion

Python中的数据转换可以通过两种方式进行:要么告诉编译器将数据类型显式转换为其他类型,要么编译器自己理解这一点并为您完成。 在前一种情况下,您正在执行显式数据类型转换,而在后一种情况下,您正在执行隐式数据类型转换。

Python Implicit Data Type Conversion

隐式转换或强制是指在编译期间或运行时发生数据类型转换,并由Python直接处理。 我们来看一个例子:

a_int = 1
b_float = 1.0
c_sum = a_int + b_float
print(c_sum)
print(type(c_sum))
2.0
<class 'float'>

提示:您可以使用Python中的type()函数来检查对象的数据类型。

在该示例中,int值a_int被添加到浮点值b_float,结果自动转换为浮点值c_sum,而无需告诉编译器。 这是隐式数据转换。

为什么浮点值不会转换为整数?

这是由于计算机科学中更广泛的类型推广概念。 简而言之,这是编译器的防御机制,允许您通过将数据转换为不同的超类型而不丢失信息来尽可能地执行操作。

这意味着没有完成从float到integer的转换,因为编译器需要删除导致信息丢失的小数部分。

Python Explicit Data Type Conversion

显式转换也称为类型转换,是因为您在程序中明确定义了数据类型转换。 您基本上强制表达式是特定类型。 显式数据类型转换的一般形式如下:

(required_data_type)(expression)

注意:您可以想象,通过显式数据类型转换,由于您强制表达式属于特定类型,因此存在信息丢失的风险。

考虑到所有这些,您可以深入了解一些常用的显式数据类型转换…

Primitive Versus Non-Primitive Data Structures

原始数据结构是数据操作的构建块,包含纯粹,简单的数据值。 Python有四种原始变量类型:

  • 整数
  • 漂浮
  • 字符串
  • 布尔值

非原始数据结构不仅存储值,而且存储各种格式的值集合。 在Python中,您有以下非原始数据结构:

  • 名单
  • 元组
  • 字典

您可以使用DataCamp的Python教程中的数据结构了解更多相关信息。

Integer and Float Conversions

整数和浮点数是处理数字的数据类型。

要将整数转换为float,请在Python中使用float()函数。 同样,如果要将float转换为整数,可以使用int()函数。

a_int = 3
b_int = 2

# Explicit type conversion from int to float
c_float_sum = float(a_int + b_int)
print(c_float_sum)
5.0
a_float = 3.3
b_float = 2.0

# Explicit type conversion from float to int
c_int_sum = int(a_float + b_float)
print(c_int_sum)

c_float_sum = a_float + b_float
print(c_float_sum)
5
5.3

Data Type Conversion with Strings

字符串是一个或多个字符(字母,数字,符号)的集合。 您可能需要经常将字符串转换为数字或数字到字符串。 看看如何使用str()函数执行此操作:

price_cake = 15
price_cookie = 6
total = price_cake + price_cookie
print("The total is: " + total  + "$")
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-12-54bd76b9b4bd> in <module>()
      2 price_cookie = 6
      3 total = price_cake + price_cookie
----> 4 print("The total is: " + total  + "$")


TypeError: Can't convert 'int' object to str implicitly

上面的示例给出了一个TypeError,通知编译器不能将整数值隐式转换为字符串。

对你来说,这个程序应该做什么似乎很直观。 但是,编译器可能并不总是确定,这就是为什么它提供了一种具有显式类型转换的机制,以便您可以清楚地说明您想要的内容。 让我们看一下类型转换的相同示例:

price_cake = 15
price_cookie = 6
total = price_cake + price_cookie
print("The total is: " + str(total)  + "$")
The total is: 21$

将float转换为字符串值时,它的工作方式相同。

在Python中,您也可以尽可能将字符串转换为整数和浮点值。 让我们看看这意味着什么:

price_cake = '15'
price_cookie = '6'

# String concatenation
total = price_cake + price_cookie
print("The total is: " + total + "$")

# Explicit type conversion to integer
total = int(price_cake) + int(price_cookie)
print("The total is: " + str(total)  + "$")
The total is: 156$
The total is: 21$

让我们分解代码。

price_cake和price_cookie最初是字符串。然后,您需要找到总数,这意味着必须先将它们转换为相应的整数值。否则,编译器将假定您想要的操作是字符串连接而不是数字加法。然后,您需要将此值放入最终的显示字符串中,因此需要将总计转换为字符串,以便将其与显示消息的其余部分连接起来。

希望这个例子可以帮助您了解数据类型转换的重要性。尽管这只是一个非常小的数据类型转换示例,但您已经可以看到它的实用性。

注意:在尝试将字符串转换为整数或浮点数时,您是否注意到“尽可能”?这是因为并不总是可以将字符串转换为数字并对它们应用数值运算。编译器知道这一点,因此,当您尝试这样做时,会出现错误。看看下面的例子:

price_cake = 'fifteen'
price_cookie = 'six'
total = int(price_cake) + int(price_cookie)
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-25-80591b8accda> in <module>()
      1 price_cake = 'fifteen'
      2 price_cookie = 'six'
----> 3 total = int(price_cake) + int(price_cookie)


ValueError: invalid literal for int() with base 10: 'fifteen'

Type Conversion to Tuples and Lists

就像整数和浮点数一样,您也可以将列表转换为元组和元组转换为列表。

还记得元组和列表是什么吗? Python中的列表和元组用于存储同类项的集合。 元组和列表之间的区别在于元组是不可变的,这意味着一旦定义,您就无法删除,添加或编辑其中的任何值。

为什么要将列表转换为元组?

这是因为元组是不可变的数据类型,并允许对您创建的程序进行大量优化。

为什么要将元组转换为列表?

也许你想对最初的元组进行更改。 因此,您可以将它们转换为列表然后进行更改,然后将它们转换回元组。

您可以使用tuple()函数返回传递给它的值的元组版本,类似地,list()函数将转换为列表:

a_tuple = (1,2,3,4,5,6,7,8,9,10)
b_list = [1,2,3,4,5]

print(tuple(b_list))
print(list(a_tuple))
(1, 2, 3, 4, 5)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

您还可以将字符串转换为列表或元组。

dessert = 'Cake'

# Convert the characters in a string to individual items in a tuple
print(tuple(dessert))

# Convert a string into a list
dessert_list = list(dessert)
dessert_list.append('s')
print(dessert_list)
('C', 'a', 'k', 'e')
['C', 'a', 'k', 'e', 's']

Binary, Octal, and Hexadecimal Integers in Python. Python中的二进制,八进制和十六进制整数

数字系统是指用于表示任何数值的符号或字符的数量。 您通常每天使用的数字系统称为十进制。 在十进制系统中,您使用十个不同的符号:0,1,2,3,4,5,6,7,8和9.使用这十个符号,您可以表示任何数量。 二进制,十六进制和八进制是指不同的数字系统。

当您用完符号时,您将转到下一个数字位置。 在十进制系统中,要表示高于9的一个,您使用10表示一个十个单位和一个零单位。 但是,它在其他数字系统中有所不同。 例如,当您考虑仅使用两个符号的二进制系统:0和1时,当您用完符号时,您需要转到下一个数字位置。 这就是你将如何计算二进制:0,1,10,11,100,101等等。

让我们在下一节中更详细地查看一些数字系统。

Convert to Binary Number

二进制整数是以二号表示的数字。 这意味着在二进制数系统中,只有两个符号用于表示数字:0和1.当你从二进制的零开始计数时,你的符号会更快地耗尽:0,1,???

此外,没有更多的符号。 你没有转到数字2,因为二进制中不存在2。 相反,您使用1和0的特殊组合。 在二进制系统中,1000等于8的十进制数。 在二进制中,你使用2的幂,这意味着8基本上是:(1(2 ^ 3))+(0(2 ^ 2))+(0(2 ^ 1))+(0(2^0)) = 8,1和0的位置定义了2将被提升到的功率。

让我们通过一个更复杂的例子来看清楚这一点:

Binary Number = 1001111
Decimal value = (1*(2^6)) + (0*(2^5)) + (0*(2^4)) + (1*(2^3)) + (1*(2^2)) + (1*(2^1)) + (1*(2^0))
              = 79

在Python中,您可以简单地使用bin()函数将十进制值转换为其对应的二进制值。

类似地,int()函数将二进制转换为其十进制值。 int()函数将第二个参数作为要转换的数字的基数,在二进制数的情况下为2。

a = 79

# Base 2(binary)
bin_a = bin(a)
print(bin_a)
print(int(bin_a, 2)) #Base 2(binary)
0b1001111
79

转换为八进制

Octal是另一个数字系统,使用的符号比传统的十进制数字系统少。 八进制是八进制,这意味着八个符号用于表示所有数量。 它们是0,1,2,3,4,5,6和7.7为10后,因为8不存在。

就像你使用二进制2的幂来确定数字的值一样,你将使用8的幂,因为这是8的基数。

在二进制系统中,10等于八进制8。 让我们把它分解:(1(8^1)) + (0(8^0))= 8.
一个更复杂的例子:

Octal Number = 117
Decimal value = (1*(8^2)) + (1*(8^1)) + (7*(8^0))
              = 79

在Python中,您可以使用oct()函数将十进制值转换为其对应的八进制值。 或者,您也可以使用int()函数以及八进制数系统的正确基数。

a = 79

# Base 8(octal)
oct_a = oct(a)
print(oct_a)
print(int(oct_a, 8))
0o117
79

键入转换为十六进制

十六进制是基数为16的数字系统。 与二进制和八进制不同,十六进制有六个额外的符号,它们在十进制数系统中找到的数字之外使用。

但是9之后呢?

一旦超出正常数值需要额外的符号,则使用字母。 所以在十六进制中,使用的符号总列表是:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E和F.

使用与之前相同的示例:

Hexadecimal Number = 4F
Decimal value = (4*(16^1)) + (F*(16^0))
              = 79

在Python中,您可以使用hex()函数将十进制值转换为其对应的十六进制值,或使用十六进制数字系统的基数为16的int()函数。

a = 79

# Base 16(hexadecimal)
hex_a = hex(a)
print(hex_a)
print(int(hex_a, 16))
0x4f
79

You Made It!

恭喜! 您主要使用内置方法了解了Python中的数据类型转换。 这肯定会帮助您解决各种数据类型,为您在编写程序时提供更大的灵活性。

DataCamp有一个关于数据科学中级Python的优秀课程,您可以在其中学习如何使用matplotlib绘制数据,使用词典和着名的pandas DataFrame。 您还将了解如何使用循环控制程序流。 在课程结束时还有一个案例研究,您将学习所有学到的知识并将您的知识付诸实践! 第一章是免费的,所以继续尝试吧!

猜你喜欢

转载自blog.csdn.net/weixin_41697507/article/details/89391319