Python 数据类型

在编程中,数据类型是一个重要的概念。它代表一种值,告诉我们可以对特定数据执行哪些操作。由于Python编程中一切都是对象,因此数据类型实际上是类,变量是这些类的实例(对象)。以下是 Python 中的标准或内置数据类型:

  • 数值类型:int, float, complex
  • 序列类型:list, tuple, range, string
  • 布尔类型:bool
  • 映射类型:set, frozenset
  • 字典类型:dict
  • 二进制类型:bytes, bytearray, memoryview
Python 数据类型

Python type() 函数获取数据类型

为了定义各种数据类型的值并检查它们的数据类型,我们使用type() 函数。实例如下:

# DataType Output: str
x = "Hello World"

# DataType Output: int
x = 50

# DataType Output: float
x = 60.5

# DataType Output: complex
x = 3j

# DataType Output: list
x = ["geeks", "for", "geeks"]

# DataType Output: tuple
x = ("geeks", "for", "geeks")

# DataType Output: range
x = range(10)

# DataType Output: dict
x = {"name": "Suraj", "age": 24}

# DataType Output: set
x = {"geeks", "for", "geeks"}

# DataType Output: frozenset
x = frozenset({"geeks", "for", "geeks"})

# DataType Output: bool
x = True

# DataType Output: bytes
x = b"Geeks"

# DataType Output: bytearray
x = bytearray(4)

# DataType Output: memoryview
x = memoryview(bytes(6))

# DataType Output: NoneType
x = None

Python 中的数值类型

Python 中的数值可以是整数、浮点数,甚至是复数。这些值在Python中定义为Python int、Python float和Python complex类。

  • 整数– 该值由 int 类表示。它包含正整数或负整数(没有分数或小数)。在 Python 中,整数值的长度没有限制。
  • 浮点数 – 该值由 float 类表示。它是一个具有浮点表示形式的实数。它由小数点指定,或者可以附加字符 e 或 E 后跟正整数或负整数来指定科学记数法。
  • 复数– 复数由一对有序的实浮点数组成,用 x + yj 表示,其中 x 和 y 是实数,j 是虚数单位。例如 – 2+3j
# Python程序演示
# 数值类型的示例

a = 5
print("a 的类型: ", type(a))

b = 5.0
print("\nb 的类型: ", type(b))

c = 2 + 4j
print("\nc 的类型: ", type(c))

输出:

a 的类型:  <class 'int'>

b 的类型:  <class 'float'>

c 的类型:  <class 'complex'>

Python 中的序列数据类型

Python中的序列数据类型是相似或不同数据类型的有序集合。序列允许以有组织且高效的方式存储多个值。Python 中有多种序列类型 –

  • Python 字符串
  • Python列表
  • Python 元组

字符串数据类型

Python 中的字符串是表示 Unicode 字符的字节数组。字符串是放在单引号、双引号或三引号中的一个或多个字符的集合。python中没有字符数据类型,字符是长度为1的字符串。它由 str 类表示。  

创建字符串

Python 中的字符串可以使用单引号、双引号甚至三引号创建。

# Python程序演示
# 创建字符串

# 创建一个使用单引号的字符串
String1 = '欢迎来到Geeks的世界'
print("使用单引号创建的字符串: ")
print(String1)

# 创建一个使用双引号的字符串
String1 = "我是一个Geek"
print("\n使用双引号创建的字符串: ")
print(String1)
print(type(String1))

# 创建一个使用三引号的字符串
String1 = '''我是一个Geek,我生活在"Geeks"的世界里'''
print("\n使用三引号创建的字符串: ")
print(String1)
print(type(String1))

# 使用三引号创建的字符串可以包含多行
String1 = '''Geeks
            For
            Life'''
print("\n创建多行字符串: ")
print(String1)

输出:

使用单引号创建的字符串: 
欢迎来到Geeks的世界

使用双引号创建的字符串: 
我是一个Geek
<class 'str'>

使用三引号创建的字符串: 
我是一个Geek,我生活在"Geeks"的世界里
<class 'str'>

创建多行字符串: 
Geeks
            For
            Life

访问字符串的元素

在Python中,可以使用索引的方法来访问字符串的各个字符。负索引允许负地址引用访问字符串后面的字符,例如-1 指最后一个字符,-2 指倒数第二个字符,依此类推。 

# Python程序演示
# 访问字符串的字符

String1 = "我是Geeks"
print("初始字符串: ")
print(String1)

# 打印第一个字符
print("\n字符串的第一个字符是: ")
print(String1[0])

# 打印最后一个字符
print("\n字符串的最后一个字符是: ")
print(String1[-1])

输出:

初始字符串: 
我是Geeks

字符串的第一个字符是: 
我

字符串的最后一个字符是: 
s

列表数据类型

列表就像数组一样,在其他语言中声明为有序的数据集合。它非常灵活,因为列表中的项目不需要是同一类型。  

创建列表 

Python 中的列表只需将序列放在方括号 [] 内即可创建。 

# 创建一个空列表
List = []
print("初始空列表: ")
print(List)

# 创建一个包含一个字符串的列表
List = ['HelloWorldHello']
print("\n使用字符串创建的列表: ")
print(List)

# 创建一个包含多个值的列表
List = ["Geeks", "For", "Geeks"]
print("\n包含多个值的列表: ")
print(List[0])
print(List[2])

# 创建一个多维列表
# (通过在一个列表中嵌套另一个列表)
List = [['Hello', 'World'], ['Hello']]
print("\n多维列表: ")
print(List)

输出:

初始空列表: 
[]

使用字符串创建的列表: 
['HelloWorldHello']

包含多个值的列表: 
Hello
Hello

多维列表: 
[['Hello', 'World'], ['Hello']]

元组数据类型

元组是另一种类似于列表的序列数据类型。元组由多个用逗号分隔的值组成。然而,与列表不同的是,元组包含在括号内。

列表和元组之间的主要区别是:列表包含在方括号([])中,它们的元素和大小可以更改,而元组包含在括号(())中并且不能更新。元组可以被认为是只读列表。例如 –

#!/usr/bin/python3

元组 = ( 'abcd', 786 , 2.23, 'John', 70.2 )
小元组 = (123, 'John')

print (tuple) # 打印完整的元组
print (tuple[0]) # 打印元组的第一个元素
print (tuple[1:3]) # 打印从第二个到第三个的元素
print (tuple[2:]) # 打印从第三个元素开始的元素
print (tinytuple * 2) # 打印元组两次
print (tuple + tinytuple) # 打印连接的元组

输出:

('abcd', 786, 2.23, 'john', 70.200000000000003)
abcd
(786, 2.23)
(2.23, 'john', 70.200000000000003)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john')

以下代码对于元组无效,因为我们尝试更新元组,这是不允许的。列表也可能出现类似的情况 –

#!/usr/bin/python3

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]
tuple[2] = 1000    # Invalid syntax with tuple
list[2] = 1000     # Valid syntax with list

Python 中的布尔数据类型

具有两个内置值 True 或 False 之一的数据类型。等于 True 的布尔对象为 true(真),等于 False 的布尔对象为 falsy(假)。但非布尔对象也可以在布尔上下文中进行计算,并确定其真假。它由布尔类表示。 

注意– 大写“T”和“F”的 True 和 False 是有效的布尔值,否则 python 将抛出错误。 

# Python program to
# demonstrate boolean type

print(type(True))
print(type(False))

print(type(true))

输出:

<class 'bool'>
<class 'bool'>

Python 中的集合数据类型

在Python中,Set是数据类型的无序集合,它是可迭代的、可变的并且没有重复元素。尽管集合可能由各种元素组成,但集合中元素的顺序是未定义的。

在 Python 中创建集合

可以通过将内置 set() 函数与可迭代对象或序列一起使用来创建集合,方法是将序列放在大括号内,并用“逗号”分隔。集合中元素的类型不必相同,也可以将各种混合数据类型值传递给集合。 

# Python程序演示
# 在Python中创建集合

# 创建一个空集合
set1 = set()
print("初始空集合: ")
print(set1)

# 使用字符串创建一个集合
set1 = set("GeeksForGeeks")
print("\n使用字符串创建的集合: ")
print(set1)

# 使用列表创建一个集合
set1 = set(["Geeks", "For", "Geeks"])
print("\n使用列表创建的集合: ")
print(set1)

# 创建一个包含混合类型值的集合
# (包含数字和字符串)
set1 = set([1, 2, 'Geeks', 4, 'For', 6, 'Geeks'])
print("\n使用混合值创建的集合")
print(set1)

输出:

初始空集合: 
set()

使用字符串创建的集合: 
{'F', 'o', 'G', 's', 'r', 'k', 'e'}

使用列表创建的集合: 
{'Geeks', 'For'}

使用混合值创建的集合
{1, 2, 4, 6, 'Geeks', 'For'}

访问集合项

集合项无法通过引用索引来访问,因为集合是无序的,因此项没有索引。但是您可以使用 for 循环遍历集合项,或者使用 in 关键字询问集合中是否存在指定值。 

# Python program to demonstrate
# Accessing of elements in a set

# Creating a set
set1 = set(["Geeks", "For", "Geeks"])
print("\nInitial set")
print(set1)

# Accessing element using
# for loop
print("\nElements of set: ")
for i in set1:
	print(i, end=" ")

# Checking the element
# using in keyword
print("Geeks" in set1)

输出:

Initial set: 
{'Geeks', 'For'}

Elements of set: 
Geeks For 

True

Python 中的字典数据类型

Python 中的字典是数据值的无序集合,用于像映射一样存储数据值,与仅保存单个值作为元素的其他数据类型不同,字典保存一个键:键值。字典中提供了Key-value,使其更加优化。字典中的每个键值对由冒号 : 分隔,而每个键由“逗号”分隔。

创建字典

在 Python 中,可以通过将一系列元素放在大括号内并用“逗号”分隔来创建字典。字典中的值可以是任何数据类型并且可以重复,而键不能重复并且必须是不可变的。字典也可以通过内置函数 dict() 创建。只需将其放在大括号{} 中即可创建空字典。注意– 字典键区分大小写,名称相同但大小写不同的键将被区别对待。 

#!/usr/bin/python3

dict = {}
dict['one'] = "This is one"
dict[2]     = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

print (dict['one'])       # Prints value for 'one' key
print (dict[2])           # Prints value for 2 key
print (tinydict)          # Prints complete dictionary
print (tinydict.keys())   # Prints all the keys
print (tinydict.values()) # Prints all the values

输出:

This is one
This is two
{'name': 'john', 'dept': 'sales', 'code': 6734}
dict_keys(['name', 'dept', 'code'])
dict_values(['john', 'sales', 6734])

访问字典中的键值

为了访问字典的项目,请参考其键名称。键可以在方括号内使用。还有一个名为 get() 的方法也有助于从字典中访问元素。 

# Python program to demonstrate
# accessing a element from a Dictionary

# Creating a Dictionary
Dict = {1: 'Geeks', 'name': 'For', 3: 'Geeks'}

# accessing a element using key
print("使用key访问元素:")
print(Dict['name'])

# accessing a element using get()
# method
print("使用get方法访问元素:")
print(Dict.get(3))

输出:

使用key访问元素:
For
使用get方法访问元素:
Geeks

数据类型转换

有时,您可能需要在内置类型之间执行转换。要在类型之间进行转换,只需将类型名称用作函数即可。

有几个内置函数可以执行从一种数据类型到另一种数据类型的转换。这些函数返回一个表示转换值的新对象。

  • int() – 用整数字面量、浮点字面量构造整数(通过对数进行下舍入),或者用表示完整数字的字符串字面量
  • float() – 用整数字面量、浮点字面量,或字符串字面量构造浮点数(提供表示浮点数或整数的字符串)
  • str() – 用各种数据类型构造字符串,包括字符串,整数字面量和浮点字面量
x = int(1)   # x 将是 1
y = int(2.8) # y 将是 2
z = int("3") # z 将是 3
x = float(1)     # x 将是 1.0
y = float(2.8)   # y 将是 2.8
z = float("3")   # z 将是 3.0
w = float("4.2") # w 将是 4.2
x = str("s1") # x 将是 's1'
y = str(2)    # y 将是 '2'
z = str(3.0)  # z 将是 '3.0'