字符串带单引号,双引号,三引号
数值,整数int,浮点数float,布尔值bool,complex复数
sequence序列对象,有顺序的:字符串 str,列表 list,tuple元组
键值对, 集合set ,字典dict(dictnartion)
数学结果对任何程序员都是必须的
class类,1整形,5.0浮点型,2+3j复数,都是对象即实例
数学计算用的比较多,分虚数和实数
bulit-in属于内建函数
x只返回实部,x,y表示返回实部,虚部
导入模块math,floor地板,ceil天花板,你的数字在天花板和地板之间,你的数字往哪边跑,
floor向地板跑,ceil向天花板跑
如果是负数,floor是往下,更小,ceil上升,变大
实际上负数会带来一些问题,这个跟向上跑和向下跑没关系,这个是取整数部分
floor向下取整,ceil向上取整,int单纯整数取整
整除就是向下跑
向上取整,向上取整都是借助math模块来做的
取整是向下的
圆整,round
写在一起找规律,
0.5的规律看看
跟.5相关的,13579都不出现了
下面这个是典型的四舍五入
口诀:四舍六入五取偶,六入是代表比0.5大一点点(0.50001比如这样)
记住四舍六入五取偶
round是四舍六入五取偶
math模块,floor,ceil明确告诉你向上取还是向下取
一个/代表自然除,。//代表整除,取整是向下取
最小值最大值
**查看帮助
iterable可迭代对象,*和传参相关
arg1代表参数,
**
用传递参数的方法
不同类型就不能比大小,需要比就需要使用高阶函数,需要你去告诉怎么比
表示谁的几次方
基本大家都用下面这种
开平方
bin二进制,oct 8进制,hex16进制
返回的是字符串需要注意
派的值
对刚才的输出求类型
这个str上没有单引号,或者双引号
但是很疑惑str是个什么类型,就可以再嵌套一层type
是个class
可以这么写
也可以判断对象类型,所有对象都是类型
数值类型是可以混加的,布尔型就是数值
如果不向float就丢东西了,因为float的精度要比整形要高
float是双精度的,比int的精度要高,都会向高精度转换
面试可能会问,精度这个东西,整形和float相加会如何,会问你为什么?
再python3种float是双精度的,按照一般语言的原则,精确度更高,都会向高精度转换
python2也有长整数和短整数,都是从短的向长的转,浮点数还分单精度和双精度,单精度向双精度转
隐式转换,一般指同样都是数值类型,,强弱一般判断是否要进行转换
obj对象,class_or_tuple
现在这两个是等价的,一般用下面的判断什么类型,偶尔会用下面的
都是内建函数经常使用的
也可以写元祖(),代表16是否下面类型中的某一个
isinstance是判断一个类型经常使用的东西,type作用很多
列表是一个队伍sequence,是按照顺序排列的,站好队给你发号牌
要依次排序站好队,不能随意,说白了就是c语言的数组,在内存中确实也是有顺序的
在内存中假如你要放大的连续的数据,空间够,但是不连续,内存就需要去规整
python中做不到给大列表,在创建的时候并不会让你开辟一个大空间,要多少给你多少,写一个元素给一个,写两个元素给你两个,会帮你预估有多少个
既然是连续的就可以编号,称为索引,找2号,就可以从0开始偏移两个单位找,找起来非常迅速
有序即可索引
一个挨一个称为线性
红色是重点,是可变的
列表,链表,队列queue,stack栈
列表是站好的队伍,有顺序可索引
(连续的空间里,元素一个挨一个排列的,有顺序,可以被索引)
链表是松散结构,不是站好的,(类似小盆友随便战,s型,t型都可以),更像是手拉手的概念
(在内存中是散落的,相当于在内存中建立关系,手拉手,从一个找到下一个,从下一个 找到上一个,是双向的,有顺序,在内存地址是不连续的)
链表
链表在内存中的表现,都是不连续的,但是链表是有顺序的知道下一个在哪里,但链表的顺序你在内存中感觉是散落的,不像列表连续地挨着的
链表也是可以索引的,找到头就可以找到下一个是谁了
列表是站好的队伍,有顺序可索引
(连续的空间里,元素一个挨一个排列的,有顺序,可以被索引)
链表是松散结构,不是站好的,(类似小盆友随便战,s型,t型都可以),更像是手拉手的概念
(在内存中是散落的,相当于在内存中建立关系,手拉手,从一个找到下一个,从下一个 找到上一个,是双向的,有顺序,在内存地址是不连续的)
这两个更多的是效率上的不同,列表要是找顺序的,只要偏移几个单位就可以得到,但是链表就不一样,需要从1号找到2号,2号找其他的
列表有个特点是可变的,如果前面第一个加元素,后面的元素都需要往后移,有10000个就往后移10000个
如果把2号删除,后面依次向前挤一个位置,这种操作非常慢,偏移需要每个单位一致,否则是没有什么用的
连续的坏处就是插入和删除麻烦点,查询也比较快,修改队伍就比较慢
链表,:比如一个3号小朋友出去,中间的关系就断掉了,2号4号手牵手就完事,不需要挪动队伍,只要链接就可以,如果新来一个小朋友,新进的下朋友和2号拉,和三号拉
查询比列表慢,插队就比较快,(插队也要先找小朋友再插队),唯一的好处是,如果链表插开头,中间找到就直接插入,找几下就搞定,还是需要找的
如果要拿一个小朋友出来,也需要找到哪个小朋友,重新建立拉手关系,
所以修改的代价小,查找比较慢
链表问题就是查的慢,修改方便
列表是差的快,修改麻烦,挪动整个列表的内存结果,是很麻烦的过程
面试也会问,链表和列表的区别:
列表是内存种连续的结构,链表是物理分布不连续,但是是有顺序的
然后可以举例回答
查询和插入都需要讲清楚
queue是对列,再计算机是专业术语
队列跟列表比较像,
queue先进先出(先进的必须先出,才能拿到后面的元素),
一般队列不能让你插队的,也不是让你遍历的(这些是列表做的)
(队列是让你拿元素,是第一个拿还是最后一个拿)
后进先出就是stack(必须了解)
(后进先出,典型的生活例子就是落盘子,不可能下面先拉出来,比如压子弹,先拉进去的,后面才能打出去)
最先压进去的数据,最后出来,
逻辑上有序,但是不是物理上有序
链表需要自己练,自己写单向链表还是双向列表
列表是必须掌握的数据结构
列表,有序,可索引,可变的,线性结构的
空列表[],list()
range可迭代对象
range(5)可迭代对象交给list,list会把你可迭代对象,一个一个放到list去,类似for循环,把range的元素添加到列表里去
单纯的是个对象】
list+可迭代对象
列表也是可迭代对象
列表不仅有顺序,可以索引,还可以迭代
(但是可迭代未必可索引,放在盒子里,如果按照顺序放,可以拿出来,但是也可以不按照顺序,也可以拿出来)
列表就是个容器,盒子,是有顺序的,在内存是连续的排序的,是个顺序结构,
int对象不可迭代,5是个单独的值,是不可被迭代的
这样写就可以
不能再python中写以开定义固定长度什么的
顺序结构