Python中的数据类型
- Python 基础教程
- 在 SublimeEditor 中配置 Python 环境
- Python 代码中添加注释
- Python 中的变量的使用
- Python 中的数据类型
- Python 中的关键字
- Python 字符串操作
- Python 中的 list 操作
- Python 中的 Tuple 操作
- Python max()和 min()–在列表或数组中查找最大值和最小值
- Python 找到最大的 N 个(前 N 个)或最小的 N 个项目
- Python 读写 CSV 文件
- Python 中使用 httplib2–HTTP GET 和 POST 示例
- Python 将 tuple 开箱为变量或参数
- Python 开箱 Tuple–太多值无法解压
- Python multidict 示例–将单个键映射到字典中的多个值
- Python OrderedDict–有序字典
- Python 字典交集–比较两个字典
- Python 优先级队列示例
数据类型定义了变量的类型。由于 Python 中 的一切皆为对象,因此数据类型本质上就是类(Class),而变量则是这些类的实例(Instance)。
在任何编程语言中,针对不同的数据类型可以执行不同的操作。某些操作适用于多种数据类型,而某些操作则是特定数据类型所独有的。
1. Python 中的内置数据类型
Python 默认提供以下内置数据类型:
| 类别 (Category) | 数据类型 / 类名 (Data types / Class names) |
|---|---|
| 文本/字符串 (Text/String) | str |
| 数值 (Numeric) | int, float, complex |
| 序列 (Sequence) | list, tuple, range |
| 映射 (Map) | dict |
| 集合 (Set) | set, frozenset |
| 布尔 (Boolean) | bool |
| 二进制 (Binary) | bytes, bytearray, memoryview |
2. 详细的数据类型
2.1 字符串 (String)
字符串定义为用单引号、双引号或三引号括起来的字符序列。其中,三引号(""")可用于编写多行字符串。
x = 'A'
y = "B"
z = """
C
"""
print(x) # 输出 A
print(y) # 输出 B
print(z) # 输出 C
print(x + y) # 输出 AB - 字符串拼接
print(x * 2) # 输出 AA - 重复运算符
name = str('john') # 构造函数
sumOfItems = str(100) # 类型转换:从 int 到 string2.2 整数、浮点数、复数 (Numeric)
这些是数字类型:
- int: 保留长度不受限制的带符号整数。
- float: 保留浮点精度数字,精度最高约为 15 个小数位。
- complex: 复数,包含实部和虚部。
x = 2 # int
x = int(2) # int
x = 2.5 # float
x = float(2.5) # float
x = 100 + 3j # complex
x = complex(100+3j) # complex2.3 列表与元组 (List & Tuple)
在 Python 中,list 是数据的有序序列。列表可以包含不同类型的数据。
- 使用
[:]运算符 可访问列表中的数据切片。 - list 支持
+(拼接) 和*(重复) 运算符。
tuple 类似于 list,但 tuple 是不可变(只读)的数据结构,一旦创建就不能修改其中的数据。此外,元组项通常用括号 ( ) 括起来。
randomList = [1, "one", 2, "two"]
print(randomList) # 输出 [1, 'one', 2, 'two']
print(randomList + randomList) # 输出 [1, 'one', 2, 'two', 1, 'one', 2, 'two']
print(randomList * 2) # 输出 [1, 'one', 2, 'two', 1, 'one', 2, 'two']
alphabets = ["a", "b", "c", "d", "e", "f", "g", "h"]
print(alphabets[3:]) # 范围切片 - 输出 ['d', 'e', 'f', 'g', 'h']
print(alphabets[0:2]) # 范围切片 - 输出 ['a', 'b']
randomTuple = (1, "one", 2, "two")
print(randomTuple[0:2]) # 范围切片 - 输出 (1, 'one')
# 下面这行代码会抛出错误,因为元组不可变
# randomTuple[0] = 0 # TypeError: 'tuple' object does not support item assignment2.4 字典 (dict)
dict 是键值对的有序集合(注:Python 3.7+ 保证插入顺序)。键可以保存任何不可变数据类型,而值可以是任意的 Python 对象。
字典中的条目用逗号分隔,并括在花括号 { } 中。
charsMap = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
print(charsMap) # 输出 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
print("1st entry is " + charsMap[1]) # 输出 1st entry is a
print(charsMap.keys()) # 输出 dict_keys([1, 2, 3, 4])
print(charsMap.values()) # 输出 dict_values(['a', 'b', 'c', 'd'])2.5 集合与冻结集合 (set & frozenset)
Python 中的 set 定义为花括号中包含的各种项目的无序集合 { }。
- 集合中的元素不能重复。
- Python set 的元素必须是不可变的。
- 不同于 list,集合没有索引(index),这意味着我们只能通过循环访问集合中的元素。
frozenset 是 set 的不可变形式。这意味着我们无法删除任何项目或向其添加项目。
digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
print(digits) # 输出 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
print(type(digits)) # 输出 <class 'set'>
print("looping through the set elements ... ")
for i in digits:
print(i) # 换行输出 0 到 9
digits.remove(0) # 普通 set 允许删除
print(digits) # 输出 {1, 2, 3, 4, 5, 6, 7, 8, 9}
frozenSetOfDigits = frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
# 下面这行代码会抛出错误,因为 frozenset 不可变
# frozenSetOfDigits.remove(0) # AttributeError: 'frozenset' object has no attribute 'remove'2.6 布尔值 (bool)
bool 值是两个常量对象 False 和 True。在数字上下文中,它们的行为分别类似于整数 0 和 1。
x = True
y = False
print(x) # True
print(y) # False
print(bool(1)) # True
print(bool(0)) # False2.7 二进制类型 (bytes, bytearray, memoryview)
bytes 和 bytearray 用于处理二进制数据。memoryview 使用缓冲协议来访问其他二进制对象的内存,而无需进行复制。
- bytes 对象是单个字节的不可变序列。它们适用于二进制数据或 ASCII 兼容的文本表示。
- bytes 字面量的语法与 string 相同,只是添加了前缀
'b'。 - bytearray 对象总是通过调用构造函数
bytearray()创建。它们是可变的对象。
x = b'char_data'
y = bytearray(5)
z = memoryview(bytes(5))
print(x) # b'char_data'
print(y) # bytearray(b'\x00\x00\x00\x00\x00')
print(z) # <memory at 0x...> (地址可能不同)3. type() 函数
type() 函数可用于获取任何对象的数据类型。
获取类型示例:
x = 5
print(type(x)) # <class 'int'>
y = 'howtodoinjava.com'
print(type(y)) # <class 'str'>如有任何问题,欢迎在评论区留言。
学习愉快!
参考:Python 文档
说明:本文示例基于 Python 3 环境。在 Python 3.7 及以上版本中,字典(dict)默认保持插入顺序;早期版本中字典是无序的。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/python-zhong-de-shu-ju-lei-xing.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。