Python数据结构详解(一)

这篇具有很好参考价值的文章主要介绍了Python数据结构详解(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习一门语言,了解其数据结构是基础。由于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))

输出结果:

Python数据结构详解(一)

1.1.2 大整数

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

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

print(2**40)

Python数据结构详解(一)

再也不用考虑数字溢出问题了,人生苦短,我用Python!
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))

Python数据结构详解(一)

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)

输出:

Python数据结构详解(一)

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))

Python数据结构详解(一)

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

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

Python数据结构详解(一)

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数据结构详解(一)

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

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

Python数据结构详解(一)

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

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

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

Python数据结构详解(一)

1.5 数值运算与逻辑运算

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

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

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

Python数据结构详解(一)

可以看到,运算符 ”/“ 和 ”//“ 的区别,”/“ 是实际的除法,”//“ 是向下取整除,这一点与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)

Python数据结构详解(一)

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

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

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

Python数据结构详解(一)

逻辑运算:逻辑运算符主要用于判断多个条件之间的逻辑关系,例如是否都满足、只需满足一个等。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")

Python数据结构详解(一)

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

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

Python数据结构详解(一)

从上面例子可以看出,虽然 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学习资料,可以到这儿获取,持续不间断地免费更新Python资料~

Python数据结构详解(一)
Python数据结构详解(一)文章来源地址https://www.toymoban.com/news/detail-484141.html

到了这里,关于Python数据结构详解(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】栈---C语言版(详解!!!)

    栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底 。栈中的数据元素遵守 后进先出LIFO (Last In First Out)的原则。 压栈 :栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈 :栈的删除

    2024年02月10日
    浏览(28)
  • 数据结构-循环队列详解(c语言版)

    目录 一、什么是循环队列? 二、特点 三、基本运算 四、代码实现  1、初始化 2、入队 3、出队 4、队满? 5、队空?  6、输出队列 7、队列大小 8、获取队首元素 五、队列应用场景 六、完整代码 1、完整代码 2、运行结果 七、总结 前言 相比于链队列, 循环队列 有着内存固

    2024年01月20日
    浏览(47)
  • 追梦之旅【数据结构篇】——详解小白如何使用C语言实现堆数据结构

        😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主! 😘博主小留言:哈喽! 😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不

    2023年04月17日
    浏览(27)
  • 数据结构之队列详解(C语言手撕)

    🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN🎉🎉🎉 🐵系列专栏:零基础学习C语言----- 数据结构的学习之路----C++的学习之路 🐓每日一句:如果没有特别幸运,那就请特

    2024年03月10日
    浏览(55)
  • (详解)数据结构-----------栈与队列 c语言实现

    本章将会详细讲解以下知识点: 目录 一:栈         1:栈的定义,栈的特点         2:用什么结构来实现栈与原因的分析?         3:  (超详解)栈的常用接口并且附上测试用例 二:队列         1:队列的定义,队列的特点         2:用什么结构来实现队列与原因的分析

    2024年02月11日
    浏览(34)
  • 【c语言指针详解】复杂数据结构的指针用法

    目录 一、动态内存分配 1.1 使用malloc和free函数进行内存的动态分配和释放 1.2 内存泄漏和野指针的概念和解决方法 二、复杂数据结构的指针用法 2.1 结构体指针和成员访问操作符 2.2 指针数组和指向指针的指针 2.2.1 指针数组 2.2.2 指向指针的指针 2.3 动态内存分配与结构体

    2024年02月04日
    浏览(39)
  • 数据结构之栈详解(C语言手撕)

    🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN🎉🎉🎉 🐵系列专栏:零基础学习C语言----- 数据结构的学习之路----C++的学习之路 🐓每日一句:如果没有特别幸运,那就请特

    2024年03月19日
    浏览(38)
  • 数据结构之单链表详解(C语言手撕)

    ​ 🎉文章简介: 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 从图片中可以看出,链表的每个节点都是一个结构体,该结构体中有一个存储数据的变量和一个指向下一节点的结构体指针; 在逻辑上

    2024年03月10日
    浏览(34)
  • 数据结构与算法教程,数据结构C语言版教程!(第五部分、数组和广义表详解)三

    数组和广义表,都用于存储逻辑关系为“一对一”的数据。 数组存储结构,99% 的编程语言都包含的存储结构,用于存储不可再分的单一数据;而广义表不同,它还可以存储子广义表。 本章重点从矩阵的角度讨论二维数组的存储,同时讲解广义表的存储结构以及有关其广度和

    2024年01月21日
    浏览(40)
  • 数据结构与算法教程,数据结构C语言版教程!(第五部分、数组和广义表详解)五

    数组和广义表,都用于存储逻辑关系为“一对一”的数据。 数组存储结构,99% 的编程语言都包含的存储结构,用于存储不可再分的单一数据;而广义表不同,它还可以存储子广义表。 本章重点从矩阵的角度讨论二维数组的存储,同时讲解广义表的存储结构以及有关其广度和

    2024年01月23日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包