1. Python 基础教程
  2. 在 SublimeEditor 中配置 Python 环境
  3. Python 代码中添加注释
  4. Python 中的变量的使用
  5. Python 中的数据类型
  6. Python 中的关键字
  7. Python 字符串操作
  8. Python 中的 list 操作
  9. Python 中的 Tuple 操作
  10. Python max()和 min()–在列表或数组中查找最大值和最小值
  11. Python 找到最大的 N 个(前 N 个)或最小的 N 个项目
  12. Python 读写 CSV 文件
  13. Python 中使用 httplib2–HTTP GET 和 POST 示例
  14. Python 将 tuple 开箱为变量或参数
  15. Python 开箱 Tuple–太多值无法解压
  16. Python multidict 示例–将单个键映射到字典中的多个值
  17. Python OrderedDict–有序字典
  18. Python 字典交集–比较两个字典
  19. 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 到 string

2.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) # complex

2.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 assignment

2.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 值是两个常量对象 FalseTrue。在数字上下文中,它们的行为分别类似于整数 01

x = True
y = False

print(x)        # True
print(y)        # False
print(bool(1))  # True
print(bool(0))  # False

2.7 二进制类型 (bytes, bytearray, memoryview)

bytesbytearray 用于处理二进制数据。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)默认保持插入顺序;早期版本中字典是无序的。