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 整数类型表达方式
整数类型表达方式有二进制、八进制、十进制与十六进制二进制:以"0B"或"0b"开头(比如0b101)八进制:以 "0o"或"0O"开头(比如0o510)十进制:比如10、29、40十六进制 :以"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次幂 = 2000x = 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中表示复数的两种方法:a+bj,注意虚数部分需要加上 "j" 或者 "J"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;非零数值,非空字符串被解释为Trueprint(bool(None)) print(bool(0)) print(bool("")) print(bool([])) print(bool(())) print(bool({})) print(bool(10)) print(bool("hello"))
而Python会将布尔类型True看作1,False看作0print(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()
返回数字的绝对值
pmod()
获取商和余数的元组
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资料~
关注穷游者的环境卫生拖鞋哥会唱歌。拖鞋哥会网鱼。拖鞋哥能够识别哪些野菜吃得哪些野菜吃不得。拖鞋哥有很强的生活能力。这些都很值得点赞!拖鞋哥去小河网鱼发现了一只死鸡。我在他视频的评论区要他拿那只死鸡去埋
芬兰上维耶斯卡教堂TuomasUusheimo2016年,历史悠久的上维耶斯卡(Ylivieska)古老的木制教堂被烧毁于一场惨烈的大火,这场灾难让小镇的居民倍感震惊和悲痛。因此,当地教区很快决定打
油价调整消息今天3月29日全国调价后9295号汽油柴油价格表北京时间2022年3月29日凌晨,车主喜讯传来,国际原油市场大幅下跌5,布伦特原油期货价格跌破112美元,美国原油期货价格一度大跌超过8。有不少车主朋友看到国际油价大跌的消息后咨询
油价调整消息今天3月29日,调整后国内9295号汽油柴油价格今日油价最新调整消息今天3月29日,星期二,我们一起来看看今天调整后的情况!今天小编问大家一个问题如今油价已经飙升到9元以上了。你们还加得起油吗?我认为,国内油价月底可能还要涨?除
这些门票价格高昂的名山大川,去过一次的游客也许不会再去名山大川向来是很多人喜爱的旅游景点。在国内,著名的名山大体可分成四大类三山黄山庐山雁荡山五岳泰山衡山华山恒山嵩山道教四大名山武当山齐云山青城山龙虎山佛教五大名山五台山峨眉山普陀山九
克雷桑来了!山东泰山集齐5虎大将,遗憾的是未来之星恐将失宠来了,山东泰山队盼望已久的强力外援克雷桑,已经踏上了前往中国的航班!28日下午,克雷桑的女友在个人社交媒体上发布了一条动态,显示正在送别克里桑登机,配上了一段深情离别的文字。随后在
盘点世界上最昂贵的八座大楼中国有两座上榜,第一名不在迪拜你知道世界上最昂贵的八座大楼都有谁吗?第一名耗资六千多亿,却不在迪拜形状扭曲的它竟被称为世界十大建筑奇迹之一!今天让我们来盘点一下世界上最昂贵的八座大楼。第八名麦加皇家钟塔饭店它是
去新疆旅行25次的苏州女子哪些事是你去过新疆以后,才知道的?其实身边很多朋友对新疆都有误解,虽然都知道大美新疆,但是因为没有到达过,总是下意识的觉得新疆不安全落后贫穷缺水。这八九年,我完成了25次新疆旅行,走过南疆北疆,春夏秋冬。可以毫不夸
北京今年将建成百公里森林步道本报讯(记者王斌)昨天,第十届北京森林文化节在十三陵国家森林公园拉开帷幕,全市百余家公园景区将推出200余场次文化活动。北京青年报记者从市园林绿化局了解到,今年,本市将在十三陵国家
中医养生有诀窍,记住六个字!内容来源人民日报微信近年来,随着人们对健康的重视,养生保健也受到人们的关注,跟着网络书籍学习各种养生防病的方法,当然这些都是从养生最基础的东西延伸出来的,而养生也并不是按按穴位,吃
俗话说不吃晚饭,饿治百病,是真的吗?或要承担4个后果越来越多的人通过不吃晚饭的方式来减肥养生。有些人表示,俗话说不吃晚饭,饿治百病,还有人说过午不食是古人养生的一种手段。吃晚饭还是不吃晚饭?晚饭吃主食还是不吃主食?这两个问题相信也困