Python Data Types

When thinking about a problem, part of the solution is often choosing the right data type. Knowing what each data type is capable of will make it much easier to pick the right one.

Variable : A variable is used to store information that can be referenced later on.

Data Types

type()

类别 类型 补充说明 类型构造函数 可变性 可迭代
Basic Integer 整型数据 int() ❌ ❌
Float 浮点数 float() ❌ ❌
Boolean 布尔值 bool() ❌ ❌
Complex numbers 复数 complex() ❌ ❌
String 字符串 str() ❌ ✅
Advanced Range 数值范围 range() ❌ ✅
Tuple 元组 有序不可变序列 tuple() ❌ ✅
推导式 List 列表 有序可变序列 list() ✅ ✅
Set 集合 无序不重复元素集 set() ✅ ✅
Dictionary 字典 键值对映射 dict() ✅ ✅
collections defaultdict 带默认值的字典 defaultdict() ✅ ✅
Counter 计数器,统计频率 Countere() ✅ ✅
deque 双端队列,高效两端操作 deque() ✅ ✅
OrderedDict 有序字典 OrderedDict() ✅ ✅
namedtuple 命名元组,字段名访问 namedtuple() ❌ ✅
ChainMap 多个字典的链式视图 ChainMap() ✅ ✅
UserDict 字典的用户友好包装器 UserDict() ✅ ✅
UserList 列表的用户友好包装器 UserList() ✅ ✅
UserString 字符串的用户友好包装器 UserString() ❌ ✅

对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

Iterator

Iterable 可迭代对象 An object that implements another special method, called __iter__. This function returns an iterator.
是数据的容器,可以通过 for 循环遍历(但不能自己遍历,需要迭代器)。
实现了 __iter__() 方法(返回一个迭代器)

Iterator 迭代器 An object that can be iterated, meaning we can keep asking it for a new element until there are no elements left. Elements are requested using a method called __next__.

可以记住遍历位置的对象。它用于逐个访问可迭代对象中的元素。
实现了 __next__() 方法 (返回下一个元素,没有元素时抛出 StopIteration)
实现了 __iter__() 方法(返回自身,使得迭代器本身也是可迭代的)

python
# 可迭代对象:字符串
s = "hi"
for char in s:  # 这里偷偷生成了一个迭代器
    print(char)  # 输出 h, i

# 自己手动用迭代器
nums = [1, 2, 3]
iterator = iter(nums)  # 找一个"翻书的人"
print(next(iterator))  # 1(翻一页)
print(next(iterator))  # 2(再翻一页)

注意

Python 支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

对变量赋值 x = y 是把变量 x 指向真正的对象,该对象是变量 y 所指向的。随后对变量 y 的赋值_不影响_变量 x 的指向。

python
a = 'ABC'
b = a
a = 'XYZ'
print(b) 
>>> ABC

注意上面的 b=a 真正含义是 b 指向了 a 指向的数据 ABC,之后再改变 a 的值,不会影响 b 的值