20201222 Python基本数据类型

  • 数据类型介绍
  • 数值类型
    • 整数int
    • 浮点数float
    • 复数complex(了解)
    • 数学计算
  • 布尔类型
  • 空值(None)
  • 字符串
    • 字符串的下标(重点掌握)
    • 字符串的切片(重点掌握)
    • 字符串类型转换
    • 字符串组成方式(掌握)
    • 字符串常见操作(熟悉)
  • 作业

数据类型介绍

  • 数值类型:int 、bool、float、 complex
  • 序列类型:
    • 不可变:str、tuple、bytes
    • 可变:list
  • 集合类型:set
  • 映射类型:dict
  • 数据类型的作用:更好分配管理内存,方便统一管理,更贴近人类分类管理的习惯

数值类型

  • Python 支持三种不同的数值类型:整数、浮点数和复数与布尔。
  • 数值类型是 不可变 类型。所谓的不可变类型,指的是类型的值一旦有不同了, 那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新 赋值一个数字类型,会新建一个数字对象。

整数int

  • 整数通常被称为整型,数值为正或者负,不带小数点。表示数字的时候,通常 使用十进制(decimal,满十进一) 来表示。
  • 十六进制用0x前缀和0-9,a-f表示,例如:0xff00。python 中使用 hex() 将十进制转为十六 进制
    eg: hex(10) --> ‘0xa’
  • 八进制用0o前缀和0-7表示,例如0o45。python 中使用 oct() 将十进制转为八进制
    eg: oct(10) --> ‘0o12’
  • 二进制用0b前缀和0-1表示,例如0b11。python 中使用 bin() 将十进制转为二进制
    eg: bin(10) --> ‘0b1010’
  • 整数内存:python 的整数长度为32位,并且通常是连续分配内存空间的。
id(1)
Out[6]: 1923706336
id(2)
Out[7]: 1923706368
1923706336 与 1923706368 是连续的,之间是相差32位
  • 小整数对象池:

    • python 初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期 重复生成!这是一个包含262个指向整数对象的指针数组,范围是-5到256。也就是说比如整数10,即使我们在程序里没有创建它,其实在 Python 后台创建好了。
    • 注意:但是如果超出了-5到256这个范围,python需要另外创建空间,甚至要重复创建。
    • 作用:节省开销,增快运行速度
  • 整数缓冲区:
    • 也就是刚被删除的整数, 不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。
    • 注意:在交互环境/dos命令当中演示不出来效果。该效果在pycharm当中实现;并且注意不是小整数对象池当中的值。
a = 10000
print(id(a)) #打印a的内存地址# del 变量名 --> 删除对象
del ab = 10000
print(id(b))结果:
2383277690672
2383277690672解析:
a 和 b的地址是一样的,但是其实del 之后, a已经不存在了。
只要你足够快,在规定的时间,a删除之后,并不会立即回收。而是等待一段时间,看是否有相同的调用
有的话,直接调用,超时的话,则销毁所以可以自定义一个时间,操作如下:
import timea = 10000
print(id(a)) del a
time.sleep(10) #规定10s,若超过10s,a的内存地址则消除,10s内创建 b = 10000,则b直接作出相同的调用b = 10000
print(id(b))

浮点数float

  • 浮点数也就是小数,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点 数,一般用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者 12.3e8,0.000012可以写成1.2e-5,等等。
  • 浮点数与整数之间转换:
    eg: float(1) --> 1.0
    int (1.5) --> 1 (注意:转化为整数的时候,直接去掉小数部分,与四舍五入无关)

复数complex(了解)

  • 复数由 实数部分 和 虚数部分 构成,可以用 a + bj, 或者 complex(a,b) 表示, 复数的 实部a 和 虚部b 都是浮点。

数学计算

  • 对于数学计算,除了前面提到过的简单的加减乘除等等,更多的科学计算需要 导入 math 这个标准库,它包含了绝大多数我们可能需要的科学计算函数。
  • math.ceil(x) :向上取整,比如4.1 --> 取5
  • math.floor(x):向下取整,比如4.5 -->取4
  • math.pow(x,y): x**y, 意思就是x的y次幂
  • abs(x):取绝对值
  • round(x,y):四舍六入五成偶 (重点)y不填的时候,默认取整数。如果填写了y则表示保留多少位小数
    在Python3中:如果5进了的话是偶数才进1,向上取整;如果5进了之后是奇数则舍去,向下取整
  • 使用上述math计算需要先导入标准库math: import math

布尔类型

  • 布尔类型只有两个值, True 与 False
  • 注意:首字母必须大写,不能有其它的花式变型。
  • 通过 python 内置的 bool() 函数来测试一个表达式的布尔值的结果:
>>> 3 > 1
True
>>> 2 < 1
False
>>> bool(True)
True
>>> bool(False)
False
  • 数值类型:0、0.0的 bool 值都为 False,其它的都为 True。
bool(1)    #True
bool(-1)   #True
bool(0)    #False
bool(0.0)  #False
  • 字符串:空字符串的 bool 值为 False,其它的都为 True。注意空格字符串为 True
bool('yes')   #True
bool('')      #False
bool('  ')    #重点:True
bool('0')     #True
  • 列表:空列表的 bool 值为False,其它的都为 True。
bool([])       #False
bool([1,2,3])  #True
  • None 的 bool 值永远为 False
bool(None)    #False

布尔类型运算

  • and 运算
  • or 运算
  • not 运算
  • 算术运算。注意:把 True 看作1,而 False 看作 0
True + 1 = 2
False + 0 = 0
Flase + 1 = 1

空值(None)

  • 空值不是布尔类型,是 Python 里一个特殊的值,用 None 表示(首字母大写)。
  • None 不能理解为0,因为0是整数类型,而 None 是一个特殊的值。
  • None 也不是 布尔类型,而是 NoneType。
type(None)
>>>NoneTypeNone == 0
>>>FalseNone == ''
>>>FalseNone == []
>>>False

字符串

  • 使用单引号或双引号来创建字符串, 使用三引号创建多行字符串。
使用单引号和双引号时,如果需要换行则加\n,如果需要打印\n,则写\\n
"hello \n hansen"
'hello \n hansen'三引号则可以保留文本的样式,可以自由换行,甚至自由书写,不需要添加换行符等其他特殊操作
'''hello
world
'''
  • 字符串的单引号与双引号都是 成对 出现的,不能一边单一边双。
  • 字符串是 不可变 的 序列数据类型,不能直接修改字符串本身,和数 字类型一样!
  • 字符串存储方式:整数 在内存中占 一个字节,字符串 不管中间多少内容都要 单独存储。

字符串的下标(重点掌握)

  • 由于字符串是 序列数据结构 ,所以我们可以通过 下标 将字符串中某个字母取出来。 下标也可称为索引,默认从0开始。(注意:空格也算)
name = "hello oldamy"name[1]
>>>'e'name[11]
>>>'y'name[-1]  #-1意思就是倒数第一个位置
>>>'y'name[12]  #如果选择的位置超出了范围,则会报错
>>>IndexError: string index out of rangename[4]   #下表索引并不能重新赋值,已经是固定好的,不可变
>>>'o'
name[4] = 'l'
>>>'str' object does not support item assignment

字符串的切片(重点掌握)


  • 注意:

    • 索引默认从0开始
    • 切片时左闭右开
    • 当是取单个字符的时候,索引超出范围会报错。而切片时不会报错。
    • 步长不能为0,也不允许为浮点数
思考: name = “hello oldamy ” ,如何取出 oldamy , hloodm 值?name 逆序输出?1.取出oldamy
name = 'hello oldamy'name[6:11]
>>>'oldam'name[6:12] #左闭右开
>>>'oldamy'  name[6:]
>>>'oldamy'name[:]  #只有冒号不填写,则代表取全部
>>>'hello oldamy'2.取出hloodm
name[::2]
>>>'hloodm'3.逆序输出
name[::-1]
>>>'ymadlo olleh'

字符串类型转换

int('1')
>>> 1int('a')
>>>错误,a不符合转化为整数int(1.0)
>>> 1int('1.0')  #注意:将字符串转化为整数的时候,并不能识别字符串里面的符号,比如里面的句号
>>> invalid literal for int() with base 10:'1.0'

字符串组成方式(掌握)

  • 字符串相加
'1'+'2' = 12 #字符串用+来进行拼接!
  • 字符串格式化
例子:
name = 'wulala'
age = 13
输入 **的年龄为**1. %号格式
# %s --> str
# %d --> decimal 十进制的数值
# %f --> float
print('%s年龄为%d'%(name,age))
弊端:%号格式需要考虑数据类型2.str.format(),用花括号{}填坑
print('{}年龄为{}'.format(name,age))
#format可以调换顺序
print('{1}年龄为{0}'.format(age,name))  #age位置为0,name位置为1
好处:str.format不用考虑数据类型,可以切换位置3.f格式,也是用花括号{}占坑
print(f'{name}年龄为{name})
注意:只适用于python3.6.4以上版本

字符串常见操作(熟悉)

  • S.find(sub) --> 返回该元素最小的索引
注意:返回类型为ints1 = 'hello python'
print(s1.find('o'))
结果:4   返回最小的索引,一共有两个o,返回最小的oprint(s1.rfind('o'))
结果:10  一般搜索都是默认从左到右,如果想要从右开始搜索,用rfindprint(s1.find('c'))
结果:-1   当搜索不存在的子字符串时,不会报错,只会显示-1
  • S.index(sub) --> 返回该元素最小的索引, 与S.find(sub) 的区别在于搜索不存在的子字符串时,S.index(sub)会报错
print(s1.find('c'))
结果:ValueError: substring not found
  • S.replace(old, new[, count]) --> 替换
s2 = 'hello oldoldamy'
#将old --> beautiful
print(s2.replace('old','beautiful'))
结果:hello beautifulbeautifulamy   如果没有标明次数,则默认全部替换print(s2.replace('old','beautiful',1)) 通过count指定替换次数
结果:hello beautifuloldamy  替换一次,替换第一个print(s2)
结果:hello oldoldamy
再次print s2的时候显示的是原始的字符串,是因为S.replace这个作用是拷贝字符串,并不改变字符串本身
  • S.split(sep=None) --> 以sep来分割字符串,并返回列表。sep默认为None,分割默认为空格
s3 = 'hello everybody yeyeye!'
#以空格将三个单词进行拆分为列表元素
print(s3.split(' '))
结果:['hello', 'everybody', 'yeyeye!']  以空格字符串进行分割,空格字符串会消失,返回为列表#以'e'进行拆分为列表元素
print(s3.split('e'))
结果:['h', 'llo', 'v', 'rybody y', 'y', 'y', '!']
  • S.startswith(prefix[, start[, end]]) --> 判断字符串是否以前缀开始,返回为bool值。
s4 = 'verycool'print(s4.startwith('ver'))
结果:Trueprint(s4.startwith('verx'))
结果:False
  • S.endswith(suffix[, start[, end]]) --> 判断字符串是否以尾缀结束,返回为bool值。
s4 = 'verycool'print(s4.endwith('ool'))
结果:Trueprint(s4.startwith('yool'))
结果:False
  • S.lower() --> 将字符串全部转为小写
  • S.upper() --> 将字符串全部转为大写
s5 = 'n'
print(s5.upper())
结果:Ns6 = 'N'
print(s6.lower())
结果:n拓展:链式调用
print(s5.upper().lower())
结果:n
  • S.strip([chars]) --> 默认去掉字符串左右的空格
s7 = ' go to work '
print(s7.strip())
结果:go to work
注意:只会去掉首尾的空格,并不会去掉中间的空格#如果想要去掉中间的空格,可以用replace
print(s7.replace(' ',''))
结果:gotowork
  • S.isalpha() --> 判断字符串是否全为字母,返回的是bool值
  • S.isdigit() --> 判断字符串是否全为数字,返回的是bool值
  • S.isalnum() --> 判断字符串是否全为数字或者字母,不存在特殊字符,返回的是bool值
  • S.join(iterable) --> 将序列中的元素以指定的字符连接生成一个新的字符串
s8 = 'hello'#实现:'h e l l o'
拓展:字符串序列是可迭代的(iteralbe),意思就是元素可以一个个取出来
print(' '.join('s8'))
结果:h e l l o  lst = ['hello', 'world']
#实现:hello world
print('',join(lst))
结果:hello world

作业

  1. 答案:
write = (input('请打印:'))if write == 'y' or write == 'Y':print('进入卸载')
elif write == 'n' or write == 'N':print('退出程序')
else:print('不在选项范围之内')


2. 答案:上述笔记


3. 答案:

#字符串逆序
name = 'todayisgoodday'
print(name[::-1])
结果:yaddoogsiyadot#字符串统计
name = 'todayisgoodday'
print(len(name))
结果:14设计的程序:
write = str(input('请输入字符串:'))if len(write) < 20:print(len(write))print(write[::-1])
else:print('请重新输入')


4. 答案:34

20201222 Python基本数据类型相关推荐

  1. Python的零基础超详细讲解(第四天)-Python的数据类型

    Python 基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型&q ...

  2. python的数据类型和变量

    python的数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种 ...

  3. python核心数据类型_Python核心数据类型-列表

    Python核心数据类型-列表 关于列表的重要属性 列表是任意对象的有序集合,列表中可以包含任何种类的对象,数字 字符串 或者是其他列表 列表可以通过偏移来读取其中的元素,也可以通过分片读取列表中的某 ...

  4. python判断数据类型type_Python 判断数据类型有type和isinstance

    Python 判断数据类型有type和isinstance 基本区别在于: type():不会认为子类是父类 isinstance():会认为子类是父类类型 执行结果如下: 用isinstance判断 ...

  5. Python基础数据类型之set集合

    Python基础数据类型之set集合 一.set数据类型介绍 二.set集合演示 三.set集合中hash介绍 1.哈希定义 2.数据类型的hash和不可hash 3.set中hash示例 四.set ...

  6. Python基础数据类型之字符串(二)

    Python基础数据类型之字符串(二) 一.字符串的常规操作 二.字符串的大小写转换 1.首字母大写 2. 每个单词首字母大写 3.大写转化为小写 4.所有字母变成大写字母 二.验证码忽略大小写 三. ...

  7. Python基础数据类型之字符串(一)

    Python基础数据类型之字符串(一) 一.字符串格式化 1.字符串占位符 2.字符串格式化操作 二.f-string格式化 三.字符串的索引 四.字符串的切片 1.常规切片使用方法 3.步长的介绍 ...

  8. 好好学python·基本数据类型

    好好学Python的第一天 基本用法 注释 输出 变量 命名规范 变量的定义方式 python的数据类型 数据类型分类 字符串类型 数字类型 List列表类型 tuple 元组类型的定义 Dict字典 ...

  9. python元组类型_什么是python元组数据类型

    什么是python元组数据类型 发布时间:2020-08-25 11:46:29 来源:亿速云 阅读:68 这篇文章运用简单易懂的例子给大家介绍什么是python元组数据类型,代码非常详细,感兴趣的小 ...

最新文章

  1. python高效 二分法查找
  2. 前端一HTML:十五: 层叠,权重,优先级的关系
  3. 未来的数据中心(三)
  4. js获取网页当前页面及路径
  5. @transactional注解失效情况
  6. 使用Lambda在AWS云上使用Java
  7. 再看数据库——(2)视图
  8. 产业链人士:LCD显示驱动芯片价格有望趋于稳定
  9. 演示如何利用log4net记录程序日志信息
  10. SpringMVC设置不拦截静态资源css,js
  11. LINUX下载编译nasm
  12. 软件质量保证与测试(秦航第二版)第一章软件质量和测试的背景
  13. Mac ffmpeg推流记录
  14. Qt 自定义ExpandableGroup
  15. 把手机上的新浪微博客户端卸载了
  16. 刘晓艳老师的考研单词记忆
  17. OpenCV每日函数 WeChat QR 微信二维码检测器
  18. IBM FlashSystem掌控现代存储,靠的是硬实力
  19. android 阻尼回弹,Android ListView实现阻尼回弹效果 并去除边缘阴影
  20. 用犯罪分析软件CrimeStat做热点图、层次空间聚类图、时空移动平均图

热门文章

  1. php图片水印制作教程,使用PHP给图片加水印的方法
  2. 电脑开机后显示器黑屏只有鼠标
  3. 2007年日语一级听力原文
  4. 【系统集成项目管理工程师】—挣值管理
  5. 一键转发微信好友朋友圈,自动跟圈
  6. 苹果ppt_苹果最新发布会中 库克的这段PPT演讲堪称惊艳!
  7. 2014年9月17日
  8. idea中摸鱼插件_idea中那些好用到飞起的插件,偷懒神器
  9. [转] 数学英语词汇
  10. 从网吧上网中学习装饰者模式