1.python基础之数据类型
- 2022 年 2 月 5 日
- 筆記
- python学习笔记
一、基础数据类型
1.数字类型(int float bool complex)
(1)int 整数(正整数 0 负整数)
type 获取值的类型
res = =type(invar)
print(res)
id 获取值的地址
res = id(intvar)
print(res)
二进制整形
intvar = 0b110
print(intvar)
print(type(intvar))
print(id(intvar))
八进制整形
intvar = 0o127
print(intvar)
print(type(intvar))
print(id(intvar))
十六进制
intvar = 0xff
promt(intvar)
print(type(intvar))
print(id(intvar))
小结:
二进制1+1=10
八进制7+1=10
十六进制f+1=10
(2) float 浮点型(小数)
浮点型简单来说就是表示带有小数的数据,而恰恰小数点可以在相应的二进制的不同位置浮动,可能是这样就被定义成浮点型了。
# 表达方式1
floatvar = 3.6 print(floatvar,type(floatvar))
# 表达方式2 科学计数法
floatvar = 5.7e5 # 小数点右移5位
floatvar = 5.7e-5 # 小数点左移5位
print(floatvar,type(floatvar))
(3)bool 布尔型(True 真的 ,False 假的)
boolvar = Ture
print(boolvar,type(boolvar))
(4) complex 复数类型
'''
3 + 4j
实数+虚数
实数:3
虚数4j
j : 如果有一个数他都平方等于-1,那么这个数就是j,科学家认为有,表达一个高精度的类型
'''
表达方式1
complexvar1 = 3 + 4j
complexvar2 = -3j #虚数部分可以是负数 是复数类型
print(complexvar1,type(complexvar1))
print(complexvar2,type(complexvar2))
表达方式2
'''
complex(实数,叙述) ==> 复数
'''
res = complex(3,4)
print(res,type(res))
2.字符串(str)类型
”’
有引号的就是字符串,单引号,双引号,三引号
# 转义字符\ +字符
(1)可以将无意义的字符变得有意义
(2)可以有意义的字符变得无意义
\n: 换行
\r\n:换行
\t : 缩进(水平制表符) 默认四个空格距离
\r : 将\r 后面的字符串拉到了当选行的行首
”’
(1)单引号的字符串
strvar = '生活不止眼前的苟且' print(savar,type(strvar))
(2)双引号的字符串
strvar = ''还有诗和远方的田野''
print(savar,type(strvar))
strvar = ''还有诗和\n远方的田野''
print(strvar)
#可以将无意义的字符变得有意义
strvar = ''还有诗和\r\n远方的田野''
print(strvar)
strvar = ''还有诗和\t远方的田野''
print(strvar)
strvar = ''还有诗和\r远方的田野''
print(strvar)
strvar = ''还有诗和\n远方的\r田野''
print(strvar)
#可以将有意义的字符变得无意义
strvar = ''还有诗\"远\"方的田野''
print(strvar)
(3)三引号的字符串(可以支持跨行效果)strvar = ”’
strvar = '''
生活就像醉酒 表面上说不要 身体却很诚实 '''
print(strvar)
#下面这么写也是可以的
stavar = ”’
生活就像”醉”酒
表面上说’不’要
身体却很诚实
”’
print(strvar)
python中单引号双引号没有区别 但是在其他语言中有区别
比如说php
$a = "123"
"{$a} => "123"
'{$a}' => '($a)' 单引号当做普通字符串
(4)元字符串 r”字符串” 原型化输出字符串
strvar = 'D:\python32_python\tar02' #这是个路径很明显这个 字符串前面没加r 很乱输出不对
print(stavar)
r”字符串” 原型化输出字符串
strvar = r'D:\python32_python\tar02'
print(strvar)
#这回就对了
(5)字符串的格式化
比如说小张买了三个药水 李四买了 四个药水 张三买了五个药水 你会发现 这些话整体来说除了数量在改变 字符串并没有改变
'''
%d 整型占位符
%f 浮点型占位符
%s 字符串占位符
'''
strvar = '张三昨天买了%d个风油精,洗澡' %(2)
print(strvar)
接下俩看这个
%2d 占两位(不够两位拿空格来部位)原字符串在右面
strvar = '张三昨天买了%2d箱风油精,洗澡' %(2)
print(strvar)
# %-2d占两位(不够两位拿空格来部位)原字符串在左面
strvar = '张三昨天买了%-2d'箱风油精,洗澡' %(2)
print(strvar)
# %f 浮点型占位符 (存在四舍五入的情况,默认保留6位小数)
strvar = '阎王爷一个月开%f工资'%(9.9)
print(strvar)
# 我么会发现 打印出来的结果是这样的 阎王爷一个月9.900000工资 小数点后保留了6位小数
# 下面有一种方法可以保留小数点后两位小数
# %.2f 保留小数点后两位小数
strvar = '阎王爷一个月开%.2f工资'%(9.9178)
print(strvar)
%.xf x = 任意数字 是几小数点后面就保留几位小数
# %s 字符串占位符
strvar = "%s最喜欢在电影院尿尿" %("李白")
print(strvar)
#综合案例
strvar = "%s在水里%s被发现了,罚了%.2f元,并且做了%d个俯卧撑" ("张三","拉屎",500.129,50000)
print(strvar)
# 如果忘记用什么占位符,可以无脑用%s。
strvar = "%s在水里%s被发现了,罚了%s元,并且做了%s个俯卧撑" ("张三","拉屎",500.129,50000)
print(strvar)
3.列表类型 (list)
定义一个空列表
listvar = []
print(listvar,type(liatvar))
定义普通列表
listvar = [98,6.9,Tyre,12-90,"张三"]
获取列表中的元素
在python分为 正向索引和逆向索引
正向索引 (从0开始) 0 1 2 3 4 ……
0 1 2 3 4
listvar = [98,6.9,Tyre,12-90,"张三"]
-5 -4 -3 -2 -1
逆向索引 (只有python可以)(从-1开始) -1 -2 -3 -4 -5
len() 获取容器类型数据中元素的个数
listvar = [98,6.9,True,12-90j,"张三"]
print(len(listvar))
# python逆向索引的特点,瞬间得到列表最后一个索引
listvar = [98,6.9,True,12-90j,"张三"]
print(listvar[-1])
# 修改列表中的元素
listvar = [98,6.9,True,12-90j,"张三"]
l1= listvar[3] = "大象"
print(l1)
4.元组类型(tuple)
特征:只能获取,不可以修改,有序
定义一个元组
tuplevar = ('张三','李四','熊大')
print(tuplevar,type(tuplevar))
获取元组中的元素
正向索引
#下面要获取熊大
tuplevar = ('张三','李四','熊大')
print(tuplevar[2])
逆向索引
逆向获取熊大
tuplevar = ('张三','李四','熊大')
print(tuplevar[-1])
修改元组中的元素 :元组中的值不能修改
注意点
我们发现下面打印结果并不是元组类型
tuplevar = (1)
print(tuplevar)
print(type(tuplevar))
#打印结果
1
<class ‘int’>
接下来我们看下一个
tuplevar = (1,)
print(tuplevar)
print(type(tuplevar))
#打印结果
(1,)
<class 'tuple'>
我们发现添加个逗号 打印结果是元组类型
总结: 逗号才是区分是否是元组的标识符
定义空元组
tuplevar = ()
print(type(tuplevar))
这个打印结果也是元组 但是没加逗号 这是为什么呢 ?
因为里面没有值 是一个空元组
字符串类型 (补充)
”’
特征:可获取,不可修改,有序
”’
正向索引
strvar = "大妹子,我 一看 你,我就心跳加速,喘不上气儿" print(stavar[3])
#打印结果:,
我们发现 空格和符号都占有一个索引位置
5.集合类型 set(交差并补)
setvar = {"Amy","Sam","谣","帅"}
print(setvat,type(setvar))
我们打印发现每次的结果都不一样,所以说集合是无序的
获取集合中的元素
setvar = {"Amy","Sam","谣","帅"}
setvar[1]
获取我们发现报错 那是为什么呢?
刚刚说过集合是无序的所以说 没有办法按照索引来获取集合中的元素
接下来再看几行代码
setvar = {"Amy","Sam","谣","帅","Sam"}
print(setvar)
我们打印完发现 原本集合中有两个Sam 却只输出了一个Sam 这说明集合具有自动去重功能
我们再看看下面的代码 看看可不可以定义空集合
setvar = {}
print(setvar,type(setvar))
打印结果报错 显然这样是不可以定义空集合的 ,接下来让我们看看如何定义一个空集合?
setvar = set()
print(setvar,type(setvar))
打印返回集合类型 定义空集合只需要set+()只有这一种方法可以创建空集合
总结:
6.字典类型 (dict)
”’
键值对存储的数据
dictvar = {键1:值1,键2:值2,……}
3.6版本之前,完全无序
3.6版本之后,存储的时候,保留了字典定义的字面顺序,在获取内存中的数据时重新按照字面顺序做了排序,所以看起来有序,实际上存储时还是无序。
”’
接下来我们创建一个字典
dictvar = {"top":"the shy","middle":"肉鸡","bottom":"jacklove","support":"吃饱饱_嘴里种水稻"}
print(dictvar,type(dictvar))
获取字典中的值
dictvar = {"top":"the shy","middle":"肉鸡","bottom":"jacklove","support":"吃饱饱_嘴里种水稻"}
res = dictvar["middle"]
print(res)
修改字典中的值
dictvar["top"] = "the boy" print(dictvar)
定义空字典
dictvar = {}
print(dictvar,type(dictvar))
重要:set和dict 的注意点
”’
字典的键和 集合的值 有数据类型上面的要求:
(允许的类型范围)不可变的数据类型:Number str tuple
(不允许的类型)可变的数据类型 :list set dict
字典的键有要求值没有要求
字典的值可以任意换掉,但是键不可以。键就相当于一个人的身份证号
哈希算法的提出目的是让数据尽量均匀的在内存当中分配,以减少哈希碰撞,提升储存分配的效率;哈希算法一定是无序的散列,所以集合 和 字典都是无序的
”’
字典允许的类型范围
dictvar = {1:"abc",4.89:111,3+90j:666,False:333,"王文":"你好帅啊,我好喜欢哦,没毛病",(1,2,3,4,5,6):9999}
print(dictvar)
集合允许的内容
setvar = {1,"a",4.56,9+3j,False,(1,2,3)}
print(setvar)