Python数据结构详解(一)
 自在人生  分类:IT技术  人气:64  回帖:0  发布于1年前 收藏

学习一门语言,了解其数据结构是基础。由于Python是动态编程语言,所以在定义变量时并不需要事先指定变量的数据类型,变量的声明和初始化是同时进行的。

Python有如下五大数据结构类型:

1、Number类型

2、字符串类型

3、列表,元组

4、字典

5、集合

下面我们逐一来了解一下~

本篇详细介绍Number类型

一、Number类型

Number类型,又叫数字类型,是Python中最基本的数据结构类型,分为整数类型(如 1、2)、浮点类型(1.1、2.2)、复合类型(1+2j)及布尔类型(True、False)。

1.1 整数类型

1.1.1 整数类型表达方式

整数类型表达方式有二进制、八进制、十进制与十六进制

  1. 二进制:以“0B”或“0b”开头(比如0b101)
  2. 八进制:以 “0o”或“0O”开头(比如0o510)
  3. 十进制:比如10、29、40
  4. 十六进制 :以“0x”或“0X”开头(比如0xA7A)

不同进制的转换函数如下:

x = 10
# 十进制转换为二进制,输出形式是字符串
y = bin(x)
print(y, type(y))
# 十进制转换为八进制,输出形式是字符串
z = oct(x)
print(z, type(z))
# 十进制转换为十六进制,输出形式是字符串
w = hex(x)
print(w, type(w))
# 接收一个符合整型规范的字符串,并将字符串转换为整型
s = "111"
r = int(s)
print(r, type(r))

输出结果:

1.1.2 大整数

Python语言非常牛X的一个特点就是可以处理大整数,别的语言可能需要通过字符串来转换(面试经常考),而Python不需要,因此Python基本不用担心数字溢出问题,这也是Python广泛应用在科学计算的主要原因。

输出超过32位的整数,伸手就来

print(2**40)

再也不用考虑数字溢出问题了,人生苦短,我用Python!

1.1.3 数字中支持下划线

Python 3.6中引入的新特性,数字中支持使用下划线,方便阅读,字符串format方法也支持了 ‘_’ 选项,当格式化为浮点数或整数时,以3位分隔,当格式化为 ’b’ , ’o’ , ’x’ 和 ’X’ 时,以4位分隔

x = 1_000_000_000_000
print(x)
print('{:_}'.format(100000000))
print('{:_b}'.format(100000000))
print('{:_o}'.format(100000000))
print('{:_x}'.format(100000000))
print('{:_X}'.format(100000000))

1.2 浮点类型

1.2.1 浮点类型表达方式

浮点类型通俗来说就是小数。一般来说就以十进制表示(如1.1),对于很大或很小的浮点型,会自动转为科学计数法表示(如1e-05)

科学计数法就是用字母e或E作为幂的符号,以10为基础。 格式:xey表示的就是x乘以10的y次幂,例如: 1.2e-02:1.2乘以10的-2次幂 = 0.012 2e3:2乘以10的3次幂 = 2000

x = 0.01
print(x)
y = 0.00001
print(y)
z = 10000000000000000.0
print(z)

输出:

1.3 复数类型

1.3.1 啥是复数

引入百度百科概念

复数,是数的概念扩展。我们把形如z=a+bi(a、b均为实数)的数称为复数。其中,a称为实部,b称为虚部,i称为虚数单位。当z的虚部b=0时,则z为实数;当z的虚部b≠0时,实部a=0时,常称z为纯虚数。复数域是实数域的代数闭包,即任何复系数多项式在复数域中总有根。

哈哈,说吧,是不是大学数学没有好好学~

1.3.2 复数类型表达方式

复数由“实部”和“虚部”两部分组成,实数部分和虚数部分都是浮点型,Python中表示复数的两种方法:

  1. a+bj,注意虚数部分需要加上 “j“ 或者 ”J“
  2. complex(a,b),其中a表示实部,b表示虚部
x = 1 + 2j
print(x, type(x))
y = complex(1, 2)
print(y, type(y))

获取复数的实部、虚部、共轭复数等(一般不搞科研也没必要知道~)

x = 1 + 2j
# 获取复数的实部,可以看到是浮点型
print(x.real)  
# 获取复数的虚部,可以看到也是浮点型
print(a.imag)
# 获取复数的共轭复数
print(a.conjugate())  

1.4 布尔类型

1.4.1 布尔类型表达方式

Python中布尔类型只有True和False两个取值,可以将这两个值翻译为”真“和假。

1.4.2 布尔类型转换

在Python中,每种类型都可以被解释为布尔类型,例如:None,0,”“,[],(),{} 被解释为False;非零数值,非空字符串被解释为True

print(bool(None))
print(bool(0))
print(bool(""))
print(bool([]))
print(bool(()))
print(bool({}))
print(bool(10))
print(bool("hello"))

而Python会将布尔类型True看作1,False看作0

print(int(True))
print(int(False))
print(True + False + 10)

这里需要注意的是,True是真的被当成1,False是真的被当成0,而像None,”“,[] 之类的,是不能直接与布尔值比较的,只有通过bool() 函数才能变成真正的布尔值

这里使用二元运算符 ”==“ 进行判断

print(1 == True)
print(0 == False)
print({} == False)
print(bool({}) == False)

1.5 数值运算与逻辑运算

数值运算包括算术运算与位运算。

算术运算有:加(+)、减(-)、乘(*)、除(/)、取余(%)、幂(**)、整除(//)。

x = 10
y = 3
# 基本的算术运算
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x % y)
print(x // y)

可以看到,运算符 ”/“ 和 ”//“ 的区别,”/“ 是实际的除法,”//“ 是向下取整除,这一点与C、Java不太一样,只能说Python一开始就考虑了数值计算的精度问题。

位运算:执行位运算时会将整数转化为二进制形式,然后从最低位开始依次每位对齐,然后执行按位与(&)、按位或(|)、按位异或(^)、按位反(~)等操作。

  • 按位与,只有两个都为1时才为1,其他都为0;
  • 按位或,只要有一个为1结果为1,两个都为0时,结果才为0 ;
  • 按位异或时,两个相同是为0,两个不同时为1。
  • 按位反,原来为1,现在则为0,原来为0,现在则为1

纸上得来终觉浅,绝知此事要躬行~,上栗子!

# 二进制00000001
x = 1
# 二进制00000010
y = 2
# 基本的位运算
print(x & y)
print(x | y)
print(x ^ y)
# 二进制11111110,涉及补码概念
print(~x)

逻辑运算包括:关系运算、逻辑运算、身份运算。

关系运算有:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)

x = 1
y = 2
print(x == y)
print(x != y)
print(x > y)
print(x < y)
print(x >= y)
print(x <= y)

逻辑运算:逻辑运算符主要用于判断多个条件之间的逻辑关系,例如是否都满足、只需满足一个等。Python中用not 表示逻辑非,and 表示逻辑与, or 表示逻辑或

x, y, z = 1, 2, 3
if (x < y) and (y < z):
    print("Yes")
else:
    print("No")

if (x < y) or (y > z):
    print("Yes")
else:
    print("No")

if not (x < y):
    print("Yes")
else:
    print("No")

身份运算:身份运算符用于比较对象,不是比较它们是否相等,实际是看内存位置是否相等

x, y, z = 1, True, 1
print(x == y)
print(x is y)
print(x is not y)
print(x is z)

从上面例子可以看出,虽然 True与1的值相等,但True并非1(内存位置不等),我们还可以看到,相同数值的变量是同一个对象,也就是说它们指向内存中同一个位置!

1.6 常用数学函数

Python内置了很多实用的数学函数,这里介绍下常用的7个函数,其他的用的时候再说吧

函数名

作用

abs()

返回数字的绝对值

divmod()

获取商和余数的元组

sum()

求和计算,对列表元组和集合等序列进行求和计算

round()

四舍五入,返回浮点数四舍五入的值

pow()

计算任意数n次方的值,与运算符”**“作用类似

min()

获取指定数值或者指定序列中最小值

max()

获取指定数值或者指定序列中最大值

1.7 数字格式化输出

在输出数字时候,有时候需要对其进行格式化操作,比如只希望保留2位小数,整数位按4位输出,不足补0,这时候我们就要用到format函数了。

具体我们来看一组栗子~

x = 1234.1234
# 保留2位小数
print(format(x, "0.2f"))
# 每千分位用,分割
print(format(x, ","))
# 每千分位用,分割,并保留2位小数
print(format(x, ",.2f"))
# 用科学计数法
print(format(x, "e"))
# 用科学计数法,保留2位小数
print(format(x, "0.2E"))
# 数字在12个字符长度区域内靠右对齐
print(format(x, ">12"))
# 数字在12个字符长度区域内靠左对齐
print(format(x, "<12"))
# 数字在12个字符长度区域内居中对齐
print(format(x, "^12"))
# 数字在12个字符长度区域内靠右对齐,整数补0
print(format(x, "0>12"))

下篇开始介绍字符串类型,欢迎点赞、关注


更多的Python学习资料,可以到这儿「链接」获取,持续不间断地免费更新Python资料~

 标签: 暂无标签

讨论这个帖子(0)垃圾回帖将一律封号处理……