数据类型 --生成器
Posted lmtlmt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型 --生成器相关的知识,希望对你有一定的参考价值。
数据类型
int
str
bool
list
uptul
dict
set
可变的,也就是不可哈希的数据类型
int bool uptul
可变数据类型 也就是可哈希的
list 增append insret extend 删 del clear remove pop
dict
set
type(类型)
input获取到的都是字符串
有下标的
dict uptal str
数据类型的操作
字符串是不可变数据类型 str str.replace(久,新)str.caplzic()首字大写 str.upper()全都大写 str.lower()全部小写 str.starswith(‘元素‘)以什么开头 str.endswith(‘元素‘)以什么结尾 len(str) str.count(所查的元素)
str.strip()默认删除前后的空格,和换行符 str.split(分割元素) 可以把字符串变为列表 ‘一扇门隔开‘.join(list)把列表变为字符串 str.find (元素)str.index(元素)通过元素找下标
list 增删改查
lst = []
lst.append(元素) 直接追加 lst.instre(‘下标‘,‘元素‘) 按下标插入元素 lst.extend(‘可迭代的对象‘) 迭代添加 (整型和布尔值不能迭代).迭代添加到列表里边
删
lst.pop(下标) 按下标删除默认删除最后一个 del lst 删除列表 del lst[下标] 可下标删除 可切片删除 lst.remove(‘元素‘)按元素删除 lst.clear()清空列表
改
lst[]=‘元素‘ 下标改和切片改 直接改 不用去接 不能用replice替换
查
for 循环查找 按下标查找
其它操作 len(lst) 查长度 lst.count()查元素的个数 lst.index(元素)查元素下标 数字型的列表 lst=[1,2,34,5,6] sort 升序 sort(reverse=true) 降序 lst.reverse()直倒叙
lst=[1,2,35,56,21]
lst.sort()
print(lst) ---[1, 2, 21, 35, 56]
lst=[1,2,35,56,21]
lst.sort(reverse=(True))
print(lst)-----[56, 35, 21, 2, 1]
uptal 元组 操作 uptal=()
元组不可以增删,不可变的数据类型 唯一的操作 就是可以查看for循环去查 按下标查看 里边的元素没要求
dict 字典
dic={}
增
dic[]=元素 有就替换没有就添加 dic.setdefault(‘键‘,值) 有就不做操作 ,没有就添加
dict.update()
删
dic.pop(键) 按键删除 默认删除最后一个 del dic 删除字典 del dic[键]可以按键删除 dic.clear)() 清空字典
改
dic[键]=值 按键去改 没有就是添加
dic2.update(dic1)
更新 被更新的内容如果在 要更新的内容中那值就会被覆盖
两个字典中,都没有一样的就是合并
print(dic2)
查
dic.get(键,值) 有就不做操作,输出有的值 ,没有的话就返回None 同样的 可以把返回你定义的值作为键值对放在字典中
可以for循环去查
字典中:get和setdefault的 区别 字典里有键时,都不操作.没有的话,get返回一值而已不会添加,setdefault没有的话,就会添加
# print(dic2.keys()) # 高仿列表 dict_keys([‘33‘, ‘66‘]) 不能使用下标
# print(dic2.values()) # 高仿列表 dict_values([‘gg‘, ‘pp‘]) 不能使用下标
# keys() # 获取所有的键 高仿列表
#
# values() # 获取所有的值 高仿列表
#
# item() # 获取键值 以元祖的形式显示
集合
set()
集合可以天然去重 {} 集合里的数据类型 必须是不可变的 ,内容要求不可变数据
没有下标
增
set.add()
set.update
删 clear pop remove
改 先删后增
查 可以for循环
集合 set se = {1,2,3} 天然去重 内容要求不可变数据
# 增:
# se.add(‘内容‘)
# se.update(‘可迭代对象‘)
# 改:
# 集合就是先删后增
# 查:
# for 循环
文件操作
r w a
r 只读 open(‘文件‘,mode=‘r‘,encoding=‘编码集‘)
如:f=open(‘a1.txt‘,mode=‘r‘,encoding=‘utf-8‘)
f.reade()
f.close
w 值写
f=open(‘a1.txt‘,mode=‘w‘,encoding=‘utf-8‘)
f.write()
f.close
w 模式下先清空文件里的内容是读不到的
a 直接在后边写
f= open(‘a1.txt‘,mode=‘a‘,encoding=‘utf-8‘)
f.write()
f.close
r+ w+ a+
r+ 先读后写
with open(‘文件‘,r+,encoding=‘utf-8‘) as f:
f.reade()
f.write()
w+ 先写后读
with open(‘文件‘,w+,encoding=‘utf-8‘) as f:
f.write()
f.reade()
a+ 写 du
with open(‘文件‘,a+,encoding=‘utf-8‘) as f:
f.write()
a+ 追加写 读
# 写读的时候是读不到内容的,除非移动光标
f = open(‘t2‘,mode=‘a+‘,encoding=‘utf-8‘)
f.seek(0)
print(f.read())
f.write(‘哈哈哈‘)
seek()移动光标 tell() 查看光标
# 最常用: r,w,a,r+,a+
with 模式下 是不用close 关闭的
非文子读取 f = open(‘QQ.jpg‘,mode=‘rb‘)
print(f.read())
# 推荐写法 相对路径
函数的初识
函数所谓的函数就是就是把代码块打包来用的
格式def 函数名():
函数体
函数名() 调用函数
函数的返回值
不写return返回的是一个None
写了return不给值 返回也是None
return 可以返回随意数据 多个元素返回的都是元祖
return 可以终止这个函数
return值返回给了调用者
参数 :
函数的参数:
形参: 定义的时候 形参位置括号内局部的
位置参数
默认参数
混合参数
实参: 调用的时候 实参是括号内的全局
位置参数
关键字参数
混合参数
动态参数 有俩 动态位置参数 动态默认参数
**kwargs 定义的时候是聚合
*kwargs 使用的时候 打散字典的键
形参排序: 位置参数 > 动态位置参数 >默认参数>动态默认位置参数
函数的空间名称: 内置空间 全局空间 局部空间
取值:局部空间>全局空间>内置空间
加载顺序:内置空间>全局空间>局部
global 在局部修改全局的数据,如果全局没有的时候,在局部修改的时候回创建一个
nonlocal 在局部里,修改离它最近的上一级,上一级不存在就继续往上找
globals() 查看全局作用域中的名字
locals() 查看当前作用域中的名字
函数名:
函数名可以 当做值 去赋值给变量
函数名可以 当做参数传递给函数
函数名可以 当做函数返回值,注意:返回值不能加括号 接力的要一层一层往下传,中间断了就接不到了
函数名可以 当做元素存放一个容器里
查看函数的内存地址 print(函数名)
闭包:
嵌套函数;
简单的说就是 f1下函数f2 用的变量是f1的值并且return f2
嵌套函数,内部函数使用外部变量(非全局变量)就是闭包
好处,
保护这个变量不被外界修改
生命周期延长
节省开辟空间和销毁空间的时间差,提高效率
迭代器:可以循环查看 满足for 循环的 __inter__ 和__next__
迭代对象 __inter__ 或者可以被for循环的就是可迭代对象
可迭代对象
list
dict
set
tuple
str
不可迭代:int bool
除了int bool 其它 str list set uptal dict 都可以迭代
生成器也是一个迭代器:
yield
def func():
print()
a=yield k
print()
yield h
g=func()-----这就是一个生成器
print(g.__next__())-----启动生成器 一个next 对应一个yield
print(g.senk(内容) -----启动生成器+给上一个yield等号左边一个值
推导式 :
生成器推导式 g=(i for in in range(8))
列表生成器:list=[i for i in range(8)]
集合推导式:set={i fo i in range(8)} set={i for i in dict.items()} for 循环的字典的键值,就是里边是元组的(键,值),外边是大括号
字典生成器:dic={dic[k]:k for k in dic} 出现俩列表时为:lst1=[1,2,3,4] lst2=[‘a‘,‘b‘ ,‘c‘,‘d‘] dic={lst1[i]:lst2[i] for i in range(len(lst1))}
dic = {‘1‘:2,‘2‘:3}
print({k:v for k,v in dic.items()})
以上是关于数据类型 --生成器的主要内容,如果未能解决你的问题,请参考以下文章
PowerDesigner 12.5 建数据库,我没有找到varchar类型 用啥类型替换把sql数据库varchar类型