Numbers(数值类型)
-
表现形式
-
进制转换 -
常用操作
-
适用于几乎所有python运算符
-
数学函数
- 内建函数
- abs()
- max()
- min()
- round()
- pow()
- math模块函数
-
随机函数
- 内建函数:random():[0,1)范围内的随机小数
- random模块
- choice(seq):从一个序列中,随机挑选一个数值;random.choice((1,2,35,5))
- uniform(x,y):[x,y]范围内的随机小数
- randomint(x,y):[x,y]范围内的随机整数
- randrange(start,stop=None,step=1):给定区间[start,stop)内的随机整数
-
三角函数
- sin(x)
- cos(x)
- tan(x)
- asin(x)
- acos(x)
- atan(x)
- degres(x):弧度-》角度
- radians(x):角度-》弧度
-
数学常量
Bool(布尔类型)
- bool:True、False
- 是int类型的子类
- 应用场景:
- 当作int类型,参与相关运算
- 比较表达式的运算结果
- 可以用于if判定条件和while循环条件
String(字符串)
’abc‘、”abc“、’’‘字符串’’’、""“字符串”""
-
概念:由单个字符组成的一个有序集合 -
字符串操作
-
使用方法:①内建函数,直接使用;②对象方法,对象.方法(参数) -
查找计算:
- len(内建函数)
- find
- 作用:查找子串索引(下标)位置
- 语法:find(sub,start=0,end=len(str))
- 返回值:找到了即返回指定索引,整型
- rfind
- index
- rindex
- count
- 作用:计算某个子字符串的出现个数
- 语法:count(sub,start=0,end=len(str))
- 返回值:子字符串出现的个数,整型
-
转换
- replace
- 作用:使用给定的新字符串,替换原字符串中的旧字符串
- 语法:replace(old,new[,count])
- 返回值:替换后的结果字符串
- 注意:并不会修改原字符串本身
- capitalize
- title
- 作用:将字符串每个单词的首字母变为大写
- 语法:title()
- 参数:无
- 返回值:每个单词首字母大写后的新字符串
- 注意:并不会修改原字符串本身
- lower
- upper
-
填充压缩
- ljust
- 作用:根据指定字符(一个),将原字符串填充至指定长度
- 语法:ljust(width,fillchar)
- 返回值:填充后的结果字符串
- 注意:不会修改原字符串;填充字符的长度为1;只有原字符串长度<指定结果长度时才会填充
- rjust
- center
- lstrip
- 作用:移除所有原字符串指定字符(默认为空白字符)
- 语法:lstrip(chars)
- 参数:chars:需要移除的字符集合,表现为字符串,即“abc”表示为“a“|”b“|”c“
- 返回值:移除完毕的结果字符串
- 注意:不会修改原字符串
- rstrip
-
分割拼接
-
split
- 作用:将一个大的字符串分割成几个子字符串
- 语法:split(sep[,maxsplit])
- 返回值:分割后的子字符串组成的列表
- 注意:不会修改原字符串本身
-
partition
-
作用:根据指定的分隔符,返回(分隔符左侧内容,分隔符,分隔符右侧内容) -
语法:partition(sep) -
返回值: ? 如果查找到分隔符:(分隔符左侧内容,分隔符,分隔符右侧内容),tuple类型 ? 如果内查找到分隔符:(原字符串,”“,”“),tuple类型 -
注意:不会修改原字符串;从左侧开始查找分隔符 -
rpartition -
splitlines
- 作用:按照换行符(\r,\n),将字符串拆成多个元素,保存到列表中
- 语法:splitlines(keepends)
- 参数:keepends:是否保留换行符,bool类型
- 返回值:list类型
- 注意:不会修改原字符串
-
join
- 作用:根据指定字符串,将给定的可迭代对象,进行拼接,得到拼接后的字符串
- 语法:join(iterable)
- 参数:iterable:可迭代的对象,如字符串、元组、列表等
- 返回值:拼接好的新字符串
-
判定
- isalpha
- 作用:字符串中是否所有字符都是字母(不包含数字、特殊字符、标点符号等;至少有一个字符)
- 语法:isalpha()
- isdigit
- isalnum
- 作用:字符串中是否所有的字符都是数字或字母(不包含特殊字符、标点符号等;至少有一个字符
- 语法:isalnum()
- isspace:空白符,包括空格、缩进、换行等不可见转义符
- startswith:startswith(prefix,start=0,end=len(str))
- endswith
- 补充:
- in:判定一个字符串是否被另外一个字符串包含
- not in
List(列表)
-
概念:有序可变的元素集合 -
定义
- 方式1
- 方式2
- 列表生成式
- 列表推导式:从一个list推到出另外一个list
- 概念
- 语法
- [表达式 for 变量 in 列表]
- [表达式]for 变量 in 列表 if 条件]
- 列表的嵌套
- 注意和c语言中数组的区别
-
常用操作
-
增
-
append 作用:往列表中增加一个新的元素(在列表的最后) 语法:l.append(object) 返回值:None 注意:会直接修改原列表 -
insert 作用:往列表中追加一个新的元素(在指定索引前面) 语法:l.insert(index,object) 返回值:None 注意:会直接修改原列表 -
extend 作用:往列表中扩展另外一个可迭代序列 语法:l.extend(iterable) 参数:iterable:可迭代集合,如字符串、列表、元组等 返回值:None 注意:会直接修改原列表 -
乘法运算 [“a”] * 3 = [‘a’,‘a’,‘a’] -
加法运算 [“a”] + [“b”,“c”] = [“a”,“b”,“c”] 和extend区别:只能列表类型和列表类型相加 -
删
-
改:names[index] = 666 -
查
-
获取单个元素:items[index] -
获取元素索引:index() -
获取指定元素个数:count() -
获取多个元素:切片items[start:end:step] -
遍历
-
方式一:根据元素进行遍历 for item in list:
print(item)
-
方式二:根据索引进行遍历 for index in range(len(list)):
print(index,list[index])
-
方式三:创建对应的枚举对象,遍历枚举对象 for idx,val in enumerate(values):
print(idx)
print(val)
for tupleValue in enumerate(values):
idx,val = tupleValue
print(idx)
print(val)
-
方式四:使用迭代器进行遍历 -
其他操作
-
判定
-
排序
-
方式一
-
内建函数:可以对所有可迭代对象进行排序 -
语法:sorted(itrearble,key=None,reverse=False) -
参数:
- itrearble:可迭代对象
- key:排序关键字;值为一个函数,此函数只有一个参数且返回一个值用来比较
- reverse:控制升序降序;默认为False,即升序
-
返回值:一个已经排好序的列表 -
案例: s = [("sz",18),("sz2",16),("sz1",17),("sz3",15)]
def getKey(x):
return x[1]
result = sorted(s,key=getKey,reverse=True)
print(result)
-
方式二
- 列表对象方法
- 语法:list.sort(key=None,reverse=False)
- 参数:同上
-
乱序:random.shuffle(list):随机打乱一个列表 -
比较
-
反转:l.reverse();切片反转l[::-1]
Tuple(元组)
-
概念:有序的不可变的元素集合(和列表的区别就是,元组元素不能修改) -
定义
-
一个元素的写法:(666,) 注:(666)是int类型 -
多个元素的写法:(1,2,3) -
多个对象,以逗号隔开,默认为元组:tuple = 1,2,3,"sz" -
从列表转换成元组:tuple(seq)(内建函数) -
补充:元组嵌套:元组中国的元素可以是元组 -
常用操作
-
注:没有增删改(因为元组是不可变的) -
查
- 获取单个元素:tuple[index]
- 获取多个元素:tuple[start:end:step]
-
其他操作
-
获取
- tuple.count(item)
- tuple.index(item)
- len(tup)
- max(tup)
- min(tup)
-
判定
-
比较
- cmp()内建函数:python3不支持
- 比较运算符
-
拼接
-
拆包 a,b = (10,20)或a,b = 10,20
集合
-
概念
- 无序的,不可随机访问的,不可重复的元素集合
- 与数学中的集合的概念类似,可对其进行交并补差等逻辑计算
- 分为可变集合和非可变集合
- set可变集合
- frozenset不可变集合:创建好之后无法增删改
-
定义
-
可变集合
-
不可变集合frozenset
-
注意
-
常用操作
-
单一集合操作
-
可变集合
-
增:s.add(element) -
删:
-
s.remove(element):返回值为None;如果集合中没有这个元素,则返回一个错误 -
s.discard(element):返回值为None;若没有这个元素,则do nothing -
s.pop(): 随机删除并返回集合中的一个元素;若集合为空,则返回一个错误 -
s.clear():返回值为None; -
改:元素是不可变类型,不能修改 -
查
- 无法通过索引或key进行查询
- 通过for in 进行遍历
- 通过迭代器进行访问
-
不可变集合
-
集合之间操作
-
交集:
-
intersection(Iterable)
-
字符串:只判定字符串中的非数字 -
列表 -
元组 -
字典:只判定key -
集合 。。。。。。 -
逻辑与‘&’ -
intersection_update(…) 交集计算完毕后,会再次赋值给原对象; 会更改原对象; 所以只适用于原对象是可变集合 -
并集
- union():返回并集
- 逻辑或’|’:返回并集
- update():更新并集,返回值为None
-
差集
- difference()
- 算术运算符‘-’
- difference_update()
-
判定
- isdisjoint():两个集合不相交
- issuperset():一个集合包含另一个集合
- issubset():一个集合包含于另一个集合
-
注意:可变与不可变集合混合运算,返回结果以运算符左侧为主
Dictory(字典)
-
概念:无序的,可变的键值对集合 -
定义
-
方式一 {key1:value1,key2:value2} 例如:{“name”:“sz”,“age”:18} -
方式二 fromkeys(seq,value=None)
- 静态方法:类和对象都可以调用
- 类调用:dict.fromkeys(“abc”,666)(此处的dict是指字典类型):{‘a’:666,‘c’:666,‘b’:666}
- 对象调用:dic.fromkeys(“abc”,666)(此处的dic是实例化的字典对象):{‘a’:666,‘c’:666,‘b’:666}
-
注意
-
key不能重复:如果重复,后值会把前值覆盖 -
key必须是任意不可变类型: 可变类型:列表、字典、可变集合等 不可变类型:数值、布尔、字符串、元组等 -
原因:
-
存在意义
- 可以通过key访问对应的值,使得这种访问更具意义:person[“name”]
- 查询效率得到很大提升:可想象”汉字字典“的使用方式
-
常用操作
-
增:dic[key] = value -
删
-
改
-
查
-
获取单个值
-
方式一:dic[key] 如果key不存在,则会报错 -
方式二:dic.get(key[,default]) -
方式三:dic.setdefault(key[,default]) -
获取所有值:dic.values() -
获取所有键:dic.keys() -
获取字典的键值对:dic.items() -
遍历
- for key in d.keys()
- for key,value in d.items()
-
注意
-
python2和python3版本之间关于获取键、值、item之间的区别 python2直接是一个列表:可通过下标进行获取指定元素 python3是Dictionary view objects -
在python2中提供了如下方法:
- viewkeys()
- viewvalues()
- viewitems()
- 作用如同python3中的Dictionary view objects
-
计算
-
判定
- x in dic
- x not in dic
- dic.has_key(key):已过期,建议使用in来代替
时间日历
-
python程序能用很多方式处理日期和时间,转换日期格式是一个常用功能。 -
常用操作
-
time模块
-
calendar模块
-
datetime模块
-
python处理日期和时间的标准库:这个库里面有datetime类、data类、time类;可以做一些计算之类的操作 -
获取当前日期 import datetime
print(datetime.datetime.now())
print(datetime.datetime.today())
-
单独获取当前的年月日时分秒 import datetime
now = datetime.datetime.now()
print(now.year)
print(now.month)
print(now.day)
print(now.hour)
print(now.minute)
print(now.second)
-
计算两个日期的天数差 import datetime
first = datetime.datetime(2017,9,1,12,0,0)
second = datetime.datetime(2017,9,2,12,0,0)
result = second - first
print(result)
-
获取两个日期时间的时间差 import datetime
first = datetime.datetime(2017,9,1,12,0,0)
second = datetime.datetime(2017,9,2,12,0,0)
result = second - first
print(result.total_seconds())
-
计算n天之后的日期 import datetime
now = datetime.datetime.now()
future = now + datetime.timedelta(days=7)
print(future)
访问集合的方式——迭代器
-
概念
- 迭代
- 是访问集合元素的一种方式
- 按照某种顺序逐个访问集合中的每一项
- 可迭代对象
- 能够被迭代的对象,称为可迭代对象
- 判定依据:能作用于for in
- 判定方法:import collections isinstance(obj,collections.Iterable)
- 迭代器
- 是可以记录遍历位置的对象
- 从第一个元素开始,往后通过next()函数,进行遍历
- 只能往后,不能往前
- 判定依据:能作用于next()函数
- 判定方法:import collections isinstance(obj,collections.Iterator)
- 注意:迭代器也是可迭代对象,所以也可以作用于for in
-
为什么会产生迭代器
-
仅仅在迭代到某个元素时才处理该元素
- 在此之前,元素可以不存在
- 在此之后,元素可以被销毁
- 特别适合于遍历一些巨大的或无限的集合
-
提供了一个统一的访问集合的接口
-
可以把所有的可迭代读写,转化成迭代器进行使用 -
iter(Iterable) iter(str) iter(list) iter(tuple) iter(dict) … -
迭代器简单使用
- 使用next()函数,从迭代器中取出下一个对象,从第一个元素开始
- 因为迭代器比较常用,所以在python中,可以直接作用于for in
- 内部会调用迭代器对象的next()
- 会自动处理迭代完毕的错误
-
注意事项
- 如果取出完毕,再继续取,则会报错:StopIteration
- 迭代器一般不能多次迭代
NoneType(空类型)
查看类型:
print(type(8)
|