master
/ 1.3数据类型.ipynb

1.3数据类型.ipynb @masterview markup · raw · history · blame

Notebook

1.3 基本数据类型

1.3 基本数据类型.jpg

1.3.1 数据与数据类型

数据: 对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。

数据可以是连续的值,比如:声音、图像;

数据也可以是离散的,如符号、文字等都是数据。

a,b,c,d; +,-,*,/,武汉,wuhan

在计算机中,所有数据最终都以__二进制__(0,1)的形式存储和表示。</font>

Python解释器内置的__12种标准类型__,包括:</font>

  1. __逻辑值检测__ (Truth Value Testing) :True、False
  2. __布尔运算__ (Boolean Operations):and、or、not
  3. __比较__(Comparisons) :<、<=、>、>=、==、!=、is、is not
  4. __数值__类型 (Numeric Types):整数(int)、浮点数(float)、复数(complex)
  5. __迭代器__类型 (Iterator Types) :迭代器对象、生成器(generator)
  6. __序列__类型 (Sequence Types):列表(list)、元组(tuple)、range
  7. __文本序列__类型(Text Sequence Type):字符串(str)
  8. __二进制序列__类型 (Binary Sequence Types):字节对象(bytes)、字节数组(bytearray)、内存视图(memoryview)
  9. __集合__类型 (Set Types):集合(set)、不可变集合(frozenset)
  10. __映射__类型 (Mapping Types):字典(dict)
  11. __上下文管理器__类型 (Context Manager Types):with
  12. __其他内置类型__ (Other Built-in Types):模块、类和类的实例、函数、方法、空对象、类型对象、代码对象和布尔值等。

Python中,数据类型分为可变数据类型和不可变数据类型。

(1)__不可变__数据类型主要有四种:

numeric(数字:int, float, complex)、string(字符串str)、tuple(元组)和range;

Python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,就相当于新建了一个对象,其id值或者说其引用的内存地址就会发生变化。

(2)__可变__数据类型主要有三种:

list(列表)、dictionary(字典dict)、set(集合)应用最广泛的数据类型: 数值类型(整型、浮点型、复数); 文本序列(字符串); 序列类型(列表、元组和range); 映射类型(字典) 集合类型等常用数据类型如表所示:
类型 示例 说明
整型 1024、79 整数大小无限制(受内存大小限制)
浮点型 123.45、12. 、23.0、0.78 取值范围: 2.2250738585072014×10-308到1.7976931348623157×10308
复数 a+bj a, b均为浮点类型
字符串 '1024' 、"test"、'''10test''' 使用成对的单引号、双引号或三引号界定。
Range range(1,10,2) range(start, stop[, step])返回的从start到stop,步长为step的整数序列,常用于控制循环。
元组 (1,2,3,4)、(1,2, 'a', 'b')、(1,) 用一对圆括号界定,元素间逗号分隔,元素可为任意数据类型。
列表 [1,2,3,4]、[1,2,'a',"b"] 用一对方括号界定,元素间逗号分隔,元素可为数字、字符串、列表、元组等任意数据类型。
集合 {1,2,3,4}、{'you','me','he'} 用一对大括号界定,元素无顺序,集合中元素具有唯一性,元素间逗号分隔。
字典 {'age':40, 'name':'zhao'} 用一对大括号界定,元素间用逗号分隔,每个元素包括包含“键”和“值”两部分。

1.3.2 数值取值范围

__整数不限制大小__(受限于内存容量)

In [3]:
print(810 ** 106)    # 可输出正确结果
# 199256272249431221328603033054645678897075327295912250213439044806853800883809353096726339601918790294815253340993739842744300688098446575123760666990589913606790210408661322708851458639282263892938644810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
199256272249431221328603033054645678897075327295912250213439044806853800883809353096726339601918790294815253340993739842744300688098446575123760666990589913606790210408661322708851458639282263892938644810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

__浮点数__最大值为1.7976931348623157e+308,超出范围会触发__溢出异常__
sys.float_info中提供了有关运行程序的机器的浮点数精度和内部表示形式的信息</font>

In [4]:
import sys

# 下面语句可获得浮点数精度和内部表示形式的信息
print(sys.float_info)
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
In [ ]:
print(810.0 ** 106)  # OverflowError: (34, 'Result too large')

1.3.3 可变与不可变数据类型

__数值类型、字符串、range____元组__ 是不可变数据类型。
不可变数据类型在使用过程中不会改变,一旦改变就意味着创建了新对象。</font>

In [2]:
a = 1024           # 旧对象
print(id(a))       # 旧对象地址 139904614127376
a = 2048           # 创建新对象,应用旧名字a
print(id(a))       # 新对象地址 139904614127504
140119688072688
140119688073104

__列表、集合、字典__是可变数据类型,他们的一些方法可以在原地修改对象的值。
变成新值后,对象的地址没有发生变化。</font>

In [1]:
ls = [1, 2, 3, 4]  # 列表,可变对象
print(id(ls))      # 地址 139904674229704
ls.append(5)       # 为列表添加一个元素5
print(ls)          # 数据[1, 2, 3, 4, 5]
print(id(ls))      # 地址 139904674229704
140565093570112
[1, 2, 3, 4, 5]
140565093570112
In [ ]: