一层内置函数 >>>>二层基础数据类型>>>>三层和数字相关14个
四层数据类型4个
1 布尔值 ***bool
只有True 和False,并且首字母必须是大写。
True: 1 int(非0), 2 str(非'') 非空: True
False: 1 int(0), 2 str('') 空: 0,“”,{},[],(),set()
2 数字 ***int
int 应用于 :+ ,- ,* ,/ ,** ,% ,
例:int1 = 2 int2 = 12
int3 = int1 + int2
int3 = int1 - int2
int3 = int1 * int2
int3 = int1 / int2
3 浮点数(小数)***float
特点: 在取值中 会取值一定的位数
print(float (1.343))
a= 3.141592653123456789
print(a)
3.141592653123457
保留15,16位小数 且最后一位是四舍五入 不太理解
4 复数 complex
复数由 a + bj : 实部和虚部组成
实数 :1
虚部:j -1的平方
3+ 4j < 5 +2j 错误 复数不能比较
四层 进制转换3个
print(bin(20))
print(oct(20))
print(hex(20))
0b10100
0o24
0x14
1 二进制 bin()
0b10100
2 八进制 oct()
0o24
3 十六进制 hex()
0x14
四层 数学运算 7个
1 计算绝对值 **abs()
l1 = [1,3,5,-2,-4,-6]
l2 = sorted(l1,key=abs)
print(l1)
print(l2)
2 返回取(商,余) **divmod()
ret = divmod(8,3)
ret1 =divmod (8,2)
print(ret)
print(ret1)
(2,2)
(4,0)
3 小数精确 **round(x,n)n为保留小数 具有四舍五入的应用
print(round(2.12133112,2))
2.12
print(round(2.12733112,2))
2.13
4 幂运算 **pow()
(x,n) x**n
(x,n,y) x**ny 取商余数 和divmod 比较直接输出余数
>>> 分2种情况
print(pow(2,3))
print(pow(2,3,4))
print(pow(2,3,3))
8
0
2
1 pow(x,y) x**y
2pow(x,y,z) x**y%z
5 求和 sum(iterable,start) ***
iterable参数必须是一个可迭代数字集
start指出求和的初始值。start+iterable中的值为最终的和
print(sum([1,2,3]))
print(sum([1,2,3],2)) 2 为初始值
print(sum([1,2,3],[3,4])) 打印报错 因为([1,2,3],[3,4])不是可迭代对象
print(sum(range(100)))
6
8
4950
6 计算最小值min()
>>>>分2种情况
字母比较也是一样的 a<b<c
1 min(iterable,key,default)
a min({1,2,3,4,-5})
print(min({1,2,3,4,-5}))
1-5
b min({},1) 不理解
print({},1) {}
c min({1,2,3,4,5},key=lambda n:abs(n))
print( min({1,2,3,4,5},key=lambda n:abs(n)))
1
print(min({1, 2, 3, 4, -5}, key=abs))
1
插入小知识 lambda 是匿名函数的关键字相当于def
固定格式 函数名 = lambda 参数(n):返回值n**n(n的条件)
print(函数名(参数的值n))
a和b 是一样的
a def add(x,y):
return x +y
print(add(1,2))
b add=lambda x,y: x+y
print(add(1,2))
2 min(*args,key,defult)
6 计算最大值max()
字母比较也是一样的 a<b<c
>>>>分2种情况
1 max(iterable,key,defult)
dic = {'k1':10,'k2':100,'k3':30}
print(max(dic))
k3 因为此时比较的是ascii 码的大小
lis = [1,3,6,-22]
print(max(lis ,key=lambda k :k))
print(max(lis ,key=abs))
6
-22
2 max(*args,key,defult)
dic = {'k1': 10, 'k2': 100, 'k3': 30}
print(max(dic, key=lambda k: dic[k]))
k2
条件是dic[k]
值最大的键
一层内置函数 >>>>二层基础数据类型>>>>三层和数据结构相关24个
四层序列13个>>>列表和元祖2个
1 列表 ***list
增加
1append
增加到最后一个列表
li = [1, 3, 4, 'wang', ]
li.append('wangyan')
print(li)
[1, 3, 4, 'wang', 'wangyan']
2insert
插入, xx.insert(3)表示列表里第2位插入,此处是内容)
li = [1, 3, 4, 'wang', ]
li.insert(3, 'wangyan')
print(li)
[1, 3, 4, 'wang',‘wangyan’]
li = [1, 3, 4, 'wang', ]
3 # extend 迭代的添加 添加的元素分开了叠加,也就是extend后如果是字符串(‘ABC’)后边则是'A', 'B', 'C',如果后边是[]
li = [1, 3, 4, 'wang', ]
li.extend([1, 2, 3, 'www'])
print(li)
[1, 3, 4, 'wang', 1, 2, 3, 'www']
li.extend([1, 2, 3, 'www'])
则变成[1, 2, 3, 'www']
li = [1, 3, 4, 'wang', ]
li.extend('luodan')
print(li)
[1, 3, 4, 'wang', 'l', 'u', 'o', 'd', 'a', 'n']
二删除 #
1pop
按照索引去删除,有返回值,
此时注意压栈思想
和insert用法类似
。pop(索引对应的值,数字是多少就是列表的数字的N - 1)删除那个
li = [1, 3, 4, 'wang', ]
li.pop(3)
print(li)[1, 3, 4]
li = [1, 3, 4, 'wang',]
li.pop()
print(li)
[1, 3, 4 ] 2remove 按照元素去删除说白了就是删除名字就行
例如1'wang'
li = [1, 3, 4, 'wang', ]
li.remove('wang')
print(li)[1, 3, 4]
3clear
列空列表结果[]
li = [1, 3, 4, 'wang', ]
li.clear()
print(li)
4del 用法和正常的键盘删除基本几样
区别.pop.remove.clear
直接del[] 删除列里面切片 取值在删除
li = [1, 3, 4, 'wang', 'True', 33, 'yy']
del li[3:6:2]
print(li)
[1, 3, 4, 'True', 'yy']
三改
先切片 在删除 在改正
1
字符串的
li = [1, 3, 4, 'wang', 'True', 33, 'yy']
li[1:4] = '宝宝'
print(li)
[1, '宝', '宝', 'True', 33, 'yy']
切片后先删除
4 ‘wang’ 变为2位 ‘宝’宝 ‘宝’ 并且迭加
2,后边的是列表[]
取片删除后进行在删除的位置合并
li = [1, 3, 4, 'wang', 'True', 33, 'yy']
li[1:3] = ['ad', 'efe', 'eded', 'wian']
print(li)
[1, 'ad', 'efe', 'eded', 'wian', 'wang', 'True', 33, 'yy']
四查 切片 查看
li = [1, 3, 4, 'wang', 'True', 33, 'yy']
print(li[3:6])
['wang', 'True', 33]
li = [1, 3, 4, 'wang', 'True', 33, 'yy']
del li
print(li)
结果为空的
打印长度
li = [1, 'dfs', 23, 87]
print(len(li))
2 元祖*** tuple
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。
例:(1,2,3)("a","b","c")
一层内置函数 >>>>二层基础数据类型>>>>三层和数据结构相关24个
四层序列13个>>>相关内置函数2个
1 反转 **reversed() 迭代器的
recersed() 迭代器 1 新生成一个列表不改变原列表 2 有返回值还是一个迭代器
2还有个是就是强转的list(ret)
reserse() 反转 1 不会生成一个列表改变原来的列表 2 返回值是Npne
l = [1, 3, 5, 4, 2, 7]
ret = reversed(l)
print(ret)
print(list(ret))
<list_reverseiterator object at 0x02B6A370> 迭代器
[7, 2, 4, 5, 3, 1]
l = [1, 3, 5, 4, 2, 7]
l.reverse()
print(l)
[7, 2, 4, 5, 3, 1]
拓展 sort() 是从小到大排序
sort() reversed()
li = [1,3,5,6,4,2]
li.sort()
print(li)
li.reverse()
print(li)
[2, 4, 6, 5, 3, 1] 列表反转
li = [2, 4, 6, 5, 3, 1]
li .sort(reverse = True)
print(li)
[6, 5, 4, 3, 2, 1] 列表倒序
2 slice 切片 转成元祖
l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])
(2, 213)
一层内置函数 >>>>二层基础数据类型>>>>三层和数据结构相关24个
四层序列13个>>>字符串9个
1 字符串***str
a 带引号的都是字符串 三引号 可以跨行
name = '郭鹏达'name2 = "王岩"
例: msg = '''
字符串
''
b 字符串拼接。 字符串加法和乘法。 S1 = ‘abc’ s2 = ‘123’ print(s1 + s2) ‘abc123’
2 .format()
大括号内是改变输出前的内容 大括号内空 和。format() 一一对应
li = ['alex','eric','rain']
# # 利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"
info = "{}_{}_{}".format(li[0],li[1],li[2])
print(info)
#第一种: 大括号内是改变输出前的内容 大括号内空 和。format() 一一对应
ret18 = 'name :{},sex:{},hig:{}'.format("王岩","男",174)
print(ret18)
name :王岩,sex:男,hig:174
3 字节 *** bytes
1 acsic码 基本不用 不同编码之间互用会产生乱码,
2 unicode A 字母 4个字节 00000000 00000000 00100100 01000000
中 文 4个字节 00000000 00000000 00100100 00000000
3utf-8 中文 A 字母 1个字节 00000001
欧 洲 2个字节 00000000 00000000 00100100 00000000
亚洲 中文 3个字节 00000000 00000000 00000000 00100100 0000000
4 gbk A 字母 2个字节 00000000 00001000
中文 亚洲 2个字节 00100100 00000000
bytes :表现形式: s = ‘Q’ b1 = s.encode ('utf-8') print (b1) b1 = b'Q'
内部存储是(utf-8 ,gbk ,gb232等)
s1 = '晓梅' b11 = s1.encode('utf-8')
表现形式: s = b'xe6x99x93xe6xa2x85' (utf-8,gbk,gb2312.....)010101
0000 1000 0000 0000 0000 0001 0000 1001 0000 0000 0000 0001
注意:在utf-8 的情况下b 后边有6个 (e6 99 等) 说名 晓梅 是中文 utf-8 是两个字6个字节
4 bytearray
5 memoryview
6 ord 字符按照unicode转数字
7 chr 数字按照unicode转字符
8 ascii 只要是ascii码中的内容,就打印出来,不是就转换成u
9 **rep 用于%r格式化输出
区别就是 输出什么就是什么 注意引号
print('name,%r'%'金老板')
name,'金老板'
print('name,%s'%'金老板')
name ,金老板
一层内置函数 >>>>二层基础数据类型>>>>三层和数据结构相关24个
四层序列13个>>>数据集合3个
1 **字典
字典相关的代码
1、字典的特性:a 字典的无序性; b 数据关联性强 C 键键值对 唯一一个映射数据类型
字典的键必修二是可哈希的(不可变的数据类型:,字符串,数字的,布尔值,元祖)
并且是唯一的
不可哈希的(可变的数据:列表,字典,set 集合)
例子 ,
dic = {'name':'aima','age':43}
2 增加
a、 增加 dic ['k'] = v 直接可覆盖 dic['name'] = 'wangyan'
b 、dic.sedefault ('k') 有键值对不做任何改变,没有键值对才添加
dic = {'name':'aima','age':43,'sex':'men'}
dic['name'] = 'wangyan'
print(dic)
dic.setdefault('goodmen','wangyan')
print(dic)
有键值 不做任何反应还是原来的字典 ,没有的就添加新的
3 、删除
a .pop() 删除一个键 就删除一个组
dic.pop('name')
print(dic)
压栈思想 .pop() 默认返回最后一个值
li=[]
l = [1,2,3,4,5]
l1 = l.pop()
print(l1)
5
b 、del 直接删除k 键
del dic['age']
print(dic)
dic = {'name':'aima','age':43,'sex':'men'}
4 改
a 和第一种增加一样 覆盖
dic['name'] = 'luodan'
print(dic)
b .update()
dic1 = {'boy':'wangmutian'}
dic .update(dic1)
print(dic)
{'name': 'aima', 'age': 43, 'sex': 'men', 'boy': 'wangmutian'}
5 查 直接打印k 就能得到V的值 但是如果没有k键 就会报错 提示None
a 直接打印k
for key in dic:
print(key)
name
age
sex
b for i in dic.keys():
for i in dic.keys():
print(i)
for i in iterms
打印出来的是键值对
6重要的格式 一定要记住!!!!!!!!! 低级尽量不用
dic = {'name':'aima','age':43,'sex':'men'}
for key,value in dic.items():
print(key,value)
name aima
age 43
sex men
for key in dic:
print(key,dic[key])
dic = {'name':'aima','age':43,'sex':'men'}
7列表变成字典 如果后边有1 ,就是值 否则[]里面都是k 值
分别给键对值
dic = dict.fromkeys(['22',(1,2),'wangyan','zhang'],'kk')
print(dic
{'22': 'kk', (1, 2): 'kk', 'wangyan': 'kk', 'zhang': 'kk'}
固定格式 一定的是
dic = dict.fromkeys() 针对于多个键 对应一个值的方法 )
---------------
2 **集合
集合是无序的 元素是可哈希的(不可变的数据类型:int str tuple bool )
但是集合本身是不可哈希的(可变的数据类型) 所以做不了字典的键
主要是用于去重
a 每次打印都是无序的 都不一样的
set = {1,'wag',4 ,'Tru',3}
print(set)
set = {1,'wag',4 ,'Tru',3,3}
print(set)
直接打印去重
b 集合的增删改查
增加 。add() .update
删 。pop
改
查 for i in set1
c 集合的交集 并集 反交集
交集&(and) 取公共部分
差集(-) 取set1 交集以外的set1
并集 取所有的 但是重复部分取一次 用|表示
set(lis)&set1(lis2)
set(lis)-et1(lis2)
set1 ={1,2,3,4}
set2 ={2,3,4,5,6,7,8}
交集
print(set1&set2)
{2, 3, 4}
去重 并集 | 表示
print(set1|set2)
{1, 2, 3, 4, 5, 6, 7, 8}
差集
print(set1-set2)
{1}
3 **冷冻集合 暂无资料
set1^set 非集合
一层内置函数 >>>>二层基础数据类型>>>>三层和数据结构相关24个
四层序列13个>>>相关内置函数8个
1 **len() 长度 字符串 列表 包含空
lis = [1,4,3,2]
print(len(lis))
s = 'wangyanluodanwangmutian '
s1 = 'wangyanluodanwangmutian'
print(len(s))
print(len(s1))
4
25
23
2 **枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),
enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
就是打印列表的索引和值
li = ['alex','银角','女神','egon','太白']
for i in enumerate(li):
print(i)
(0, 'alex')
(1, '银角')
(2, '女神')
(3, 'egon')
(4, '太白')
for index,name in enumerate(li,1):
print(index,name)
1 alex
2 银角
3 女神
4 egon
5 太白
3 all 判断是否有bool值为False 的值
4 any 判断是否有bool值为True 的值
5 **zip 返回一个迭代器必须有个list 转化 拉链 以最短的为基准 将两个列表整合成两个列表 分别取值
print( list(zip([1,2,3,4,5],[2,3,4])))
[(1, 2), (2, 3), (3, 4)]
6 filter 过滤 通过函数的定义过滤
# 题目 用filter过滤方法 处理里面的偶数
# 三元运算 注意了没有 标点 True if n %2 ==0 else False
# li =[1,2,3,4,5,6,7,8]
# def func(n):
# if n %2==0:
# return n
# print(list(filter(func,li)))
# ret = filter(lambda n:True if n %2 ==0 else False,li)
# print(list(ret))
# for i in ret :
# print(i)
def small(x):
if x < 10:
return True
ret = filter(small,[1,4,3,22,55,33])
print(list(ret))
[1,4,3]
def small(x):
return x % 2 == 1
ret = filter(small,[1,4,3,22,55,33])
print(list(ret))
7 map 返回一个新的列表
map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,
map函数则会把每一个参数都以相应的处理函数进行迭代处理。
map()函数接收两个参数,一个是函数,一个是序列,
map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
1 题目 名字前面加hr_.
第一种
li = ['wangyan','luodan','wangyanmutian']
def nam(n):
return 'hr_'+n
print(list(map(nam,li)))
['hr_wangyan', 'hr_luodan', 'hr_wangyanmutian']
for i in ret:
# print(i)
hr_wangyan
hr_luodan
hr_wangyanmutian
第二种
print(list(map(lambda n: 'hr_'+n,li)))
要是不要列表直接for 循环
map (函数,列表)
L = [1,2,3,4,]
def pow2(x):
return x*x
print(list(map(pow2,L)))
8sorted
l1 = [1,3,5,-2,-4,-6]
l2 = sorted(l1,key=abs)
print(l2)
一层内置函数 >>>>二层作用域相关
1 global 改变全局的
n = 1
def func():
global n
n = n +1
print(n)
print(n)
func()
print(n)
1 ,2,2
2 local 的内容会根据执行位置来决定作用域中的内容 如果在全局执行 和globals() 一样
3 nonlocl 修改最近拥有该变量的外层函数 不影响全局
n = 1
def func1():
n = 2
def func2():
nonlocal n
n+=1
print(n)
func2()
func1()
print(n)
答案 是 3 引用上级的, 1 全局的
一层内置函数>>>>二层迭代器/生成器相关(3)
判断是不是可迭代对象 print('__iter__'in dir(对象))
print(isinsstance(对象),iterable )
迭代器的含义 含有 .__iter__() 的 且比可迭代对象多一个next 方法
方 法 next iter 两个个用法
生成器的含义本质 生成器的本质就是迭代器
方法
1 iter 可迭代对象的一个方法
2 next 迭代器的比可迭代对象多个方法
3 ***range
yield py关键字 genertaor 生成器
含有yield的话就变成了生成器
条件有二
1是有yield
2函数的调用
3 print(g) 是 F 或者T 是不是生成器???
4 打印t(g._next_())
打出来就是yield 后面
例子
打印出100件衣服 标上序号
def cloth():
for i in range (100):
yield ('衣服%s'%i)
g = cloth()
1 一件一件的打印
print(g.__next__())
2打印前50件
for i in range(50):
print(g.__next__())
3全打出了来
for i in g:
print(i)
一层内置函数>>>>二层迭代器/生成器相关(3)>>>>其他>>>>字符串类型代码的实行3个
注意这个三个尽量不要用 或者请示领导再用
1 **eval 执行 有返回值的 可以拿到结果的 针对字符串的 可以直接运算出结果来 记住针对字符串的
2 **exec 用于流程性代码的执行
print(exec('1+3-3-1'))
print(eval('1+3-3-1'))
None
0
3 compile 编译
一层内置函数>>>>二层迭代器/生成器相关(3)>>>>其他>>>>输入输出2个
1 ***input 用户交互 name = input ('请输入内容') 必须是str
2 ***print 打印出内容 默认是sep = ','
print(1,2,3,4,5 ,sep = '*')
1*2*3*4*5
一层内置函数>>>>二层迭代器/生成器相关(3)>>>>其他>>>>内存相关2个
id hashi函数是一个算法 结果是一个数字 每次数字不一样的
存储和查找 只要不可变就是
1 ***hash 可哈希(不可变) 不可哈希(可变)
2 id 内存地址
print(id('wangyan'))
print(hash('wangyan'))
每次打印的数字都是u不一样的
一层内置函数>>>>二层迭代器/生成器相关(3)>>>>其他>>>>文件操作相关(1)
1 **open
f = open('文件名',encoding = 'utf-8')
打开模式 有 默认 r 读模式
w 写模式 清空
a 不可读 追写文件的最后 没有则创建
b 以字节的形式打开
一层内置函数>>>>二层迭代器/生成器相关(3)>>>>其他>>>>模块相关(1)
1 ***import
import os
os.remove()
os.rename('old','new')
import time
start = time.time()
end = time.time()
一层内置函数>>>>二层迭代器/生成器相关(3)>>>>其他>>>>查看(1)
在pyxm 左键单击
help 包含所有的用法
in dir 只包含方法名字
1 help
a 直接help 退出 q
b help(数据类型) 制定查看某对象的帮助信息
一层内置函数>>>>二层迭代器/生成器相关(3)>>>>其他>>>>调用相关(1)
1 callable 是否可以调用 返回布尔值
a = [1,3,4,6]
print(callable(a))
print(callable(print()))
print(callable('abc'))
全是False
2 **dir 1 查看内置属性 dir(__builthin__)
2 查看某对象的属性及方法 dir()