文章目录
Python的基本数据类型
整形与浮点型
Number:数字
描述:Number是Python里的一个大的分类,分的细致点,还有int整数,float浮点型。
int:整数
描述:没什么可以描述的,就是数学意义上的整数。
float:浮点型
描述:Python里面的float的精度相当于其他语言(比如C#)里面的 double 的双精度的精度一样;在Python里面没有双精度、单精度之分。
重点!!
Python里面虽然2除以2能够整除,但Python里面还是把结果自动转换成浮点类型float,这个是有区别与其他语言的特点。
那如果我想相除得到一个整形怎么办?
使用双斜杠 // 就能够相除以后得到一个整形类型的数值,你可以理解为,双斜杠的相除表示抛弃小数点,因为 1//2
是等于0的,值为0.5但因为把小数去除,得到的结果为零。
各进制的表示与转换
二进制表示:在数值前面加上0b
比如 0b10 表示10进制里面的2
0b01 表示10进制里面的1
八进制表示:在数值前面加上0o(零加上字母o)
比如 0o10 表示10进制的8
0o11 表示10进制的9
十六进制表示:在数值前面加上0x(零加上字母x)
比如 0x10 表示10进制的16
0x11 表示10进制的17
怎么把10进制、8进制、16进制转换成2进制
通过bin方法
怎么把2进制、8进制、16进制转换成10进制
通过int方法,int除了可以表示整数类型,也可以当成转换10进制的方法。
怎么把10进制、8进制、2进制转换成16进制
通过hex方法
怎么把2进制、10进制、16进制转换成8进制
通过oct方法
布尔类型与复数
值得注意的是布尔类型在Python中是归类到数字Number这一大类里面的! 为什么下面会有介绍
值得注意的是True False都是大写开头的这一点Python和别的语言有区别,小写开头在IDLE里面会报错
为什么说bool可以归类到Number这一大类,因为True False都是可以转换成数字的
那么反过来,数字也都是可以转成bool值的
从上图可以看出,并不是只有0和1可以转成布尔值,且只有0代表False,其他所有非零的数字都代表True!
由上图可以看出,不只有数字可以转成布尔值,字符串、列表、元组、None 也可以转成布尔值!只有该数据类型的空值代表False 其他不为空的值都代表True
Python中表示复数的语法就是在数字后面加一个小写的字母j,复数这边就不做太多的介绍,后面用到再说吧
字符串
单引号 与 双引号 与 三引号
由上图可以看出
‘let’ s go’里面单引号不是成对出现的,所有直接报错
"let’ s go"里面外面不是用单引号,用的是双引号,就不会报错,所有里面的单引号应该被识别成字符串了,应该python是考虑过这种情况的出现才会有这三种表示字符串的方式,怪不得说Python的开发效率这么高呢
不光外面双引号里面单引号不会报错,反过来外面单引号里面双引号也不会报错,如果非要用三个单引号,那就用到了转义字符了
三引号的出现方便我们字符串的换行,而且三个单引号和三个双引号语法上都没问题的。
IDLE里面不会识别到转义字符,但print方法可以识别转义字符,这是IDLE里面的一个特点
这也是一种字符串换行的方式,但并不没有实际的换行的作用
转义字符
在转义字符前面加一个反斜杠就,转义字符就不会被当成转义字符,而是一个普通的字符串
原始字符串
在字符串前面加一个小写字母r表示这个字符串是一个原始字符串,即所写即所得,这就是原始字符串的概念
字符串的运算
字符串的拼接
字符串的乘法
字符串乘以字符串会报错
把字符串当成数组 [ ] 里面填索引可以访问到字符串对应的字符
负数的一个索引是倒序的顺序来索引字符串的值的
[起始索引:结束索引] 表示截取从起始索引到结束索引的上一位字符
[起始索引:结束索引] 就算结束索引不存在,但在Pthon中也会按最大的索引来处理,并且不会报错
倒序的一个截取字符串不用输入结束索引就会从最后一个字符串开始截取
可以看到【:-4】和【0:-4】的结果是一样的,不写起始索引默认从第一个开始截取字符串
原始字符串前面的r既可以小写也可以大写
列表
列表的定义
用中括号定义一个列表
列表的基本操作
这里值得注意的是这个[0]索引的是单个列表的元素 [0:2]索引的是结果还是为一个列表
列表和元组的操作上基本一致
两个列表的相加等于一个新的合并列表
列表和列表相乘、列表相减都会报错
列表和数字相乘,列表会重复相乘数字次数
元组
元组用括号来定义
元组和列表的操作上基本一致,区别会在后面讲解。
元组的英文单词是tuple
只有一个元素的元组不知道为什么会得到对应这个元素的类型?这个奇特的现象后面会有所解答。
从上图可以看出为什么 type((1)) 得到会是一个int,因为IDLE里面硬性规定了 (1) 是优先代表数学运算的括号的。如果想定义只有一个元素的元组可以通过 (1,) 来定义,如果想定义一个空的元组,直接写一对空的括号就可以了,()。
str、list、tuple,字符串、列表、元组,在Python里面都有非常相似的操作,是因为他们都是序列结构。
而对序列结构的【0:3】这种操作,叫切片。
切片的操作还能有【0:8:2】这样三个数字的用法,具体是怎么个原理还不清楚,后面会有讲解。
上图 3 in [1,2,3,4,5,6] 是表示3是否在这个列表里面
not in表示是否不在这个列表里面
len方法是得到序列有多少个元素的方法
max是得到序列在最大的元素的方法
min是得到序列中最小的元素方法
如果max、min方法里面的元素不是数字,而是字符串,会输出ASCll码最大的元素
ord方法是得到一个字符的ASCLL码
集合set
集合的定义用花括号{}
集合的特性是:无序、不重复
集合也支持len方法,in ,not in
减号是求两个集合的差集,&是求两个集合的交集,| 是求两个集合的合集或者说是并集
定义空集合不是通过一对花括号{}来定义,可以看到这样定义实际上是一个字典类型的定义。
空集合是通过set()来定义
字典dict
字典属于集合类型
字典不能通过序号来访问,可以通过key来访问value的值,并且当字典有重复的key的时候,字典只会存储最新的一个value,所以字典不能有重复的key,否则会造成数据丢失。
字典里面数字1和字符串“1”用作key时不会识别成同一个key
元组是可以作为key的一种类型,因为元组、字符串、数字是不可变的一种类型