4.1 数据类型前置知识
4.1.1 数据类型的概念
顾名思义,数据类型就是指数据的类型,计算机不像人,能够很好的分辨数据类型,比如10086
,计算机就不知道这个数据到底是字符串还是数值。计算机在用这个数据进行计算时就会出现问题。
为了避免这种情况,需要对数据贴一个标签,这个标签就是类型。告诉计算机遇到这种数据应该怎么处理。
4.1.2 哈希
哈希(Hash),一般翻译做散列、杂凑。是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。
这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。
简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
在Python学习中经常会遇到两个概念,可哈希和不可哈希。其实可哈希就是指数据不可原地修改,而不可哈希就是指数据可原地修改。比如在Python中,字符串数据类型就是可哈希的(不可变),而列表数据类型就是不可哈希的(可变)。
4.1.2.1 hash(obj)
描述
hash函数返回该对象的哈希值(如果它有的话)。哈希值是整数。它们在字典查找元素时用来快速比较字典的键。
相同大小的数字变量有相同的哈希值(即使它们类型不同,如 1 和 1.0)。
整数的哈希值就是其本身。
可变的数据类型在尝试获取哈希值时会报错:unhashable。
示例
|
print(hash(2)) |
|
print(hash(2.0)) |
|
print(hash(2.1)) |
|
print(hash('hash')) |
|
print(hash([1, 2])) |
2 2 230584300921369602 -1167130528123277563 Traceback (most recent call last): File "E:\studypy\tmp.py", line 6, in
print(hash([1, 2])) TypeError: unhashable type: 'list'
4.1.3 Python常见数据类型
Python中比较重要且常用的数据类型有以下6种:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的6个标准数据类型中,相关属性如下表:
数据类型 | 可哈希 | 可迭代 | 序列 |
---|---|---|---|
数字 | 可哈希 | 不可迭代 | NULL |
字符串 | 可哈希 | 可迭代 | √ |
列表 | 不可哈希 | 可迭代 | √ |
元组 | 可哈希 | 可迭代 | √ |
集合 | 不可哈希 | 可迭代 | × |
字典 | 不可哈希 | 可迭代 | × |
接下来的章节,我们会对这些数据类型进行详细介绍。
4.1.4 判断数据类型
可以使用type函数和isinstance函数来判断某个对象的类型。
4.1.4.1 type(obj)
描述 type函数用来返回指定对象的类型。 示例 >>> type('1') >>> type(1) >>> type(1.1)
<class 'str'> <class 'int'> <class 'float'>
4.1.4.2 isinstance(object, classinfo)
描述 isinstance函数用来返回某个对象是否是指定的对象类型。 示例 >>> isinstance(1, int) >>> isinstance(1.1, str)
True False