一.数字类型(int,bool,float)
数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间,数字类型是不可变的不可迭代的数据类型
1.int(整形)
int - 通常被称为是整型或整数,主要用于计算.
int(x) 将x转换成数字类型
用于比较和计算
.bit_length #查询数字的位数的方法
2.bool
布尔值就两种:True,False。就是反应条件的正确与否。
真 1 True。
假 0 False。
3.float(浮点数)
小数点可变,浮点数的小数点是不准确的 : 小数的小数位是转换成二进制存储;所有的除法(除了//)得到的都是小数
二.序列类型 (字符串 列表 元组)
1.字符串
字符串:字符串或串(String)是由数字、字母、下划线组成的一串字符,可迭代不可变数据类型.
eg: s = "akdsl_asa12121_d"
方法:
.split() 分割 #通过对括号内的元素进行切割来达到分割字符串,并将结果输出到一个列表中
.strip() 脱 默认消除字符串头尾的空格和换行符 场景:用户输入消除空格
.replace("x","y") 替换 #括号内前面是需要替换的,后面是替换的
(" ").join(变量) 插入 拼接 #将列表转成字符串
.format 格式化输出 可以按照位置参数,索引,关键字填充
.upper() 全部大写 #应用场景(验证码)
.lower() 全部小写 #应用场景(验证码)
.find() 查找 不存在返回 -1
.index() 查找 不存在报错
.isdigit() 判断是不是纯数字
.isalpha() 判断是不是纯字母
.center() 居中 前面字符串宽度,后面添加字符
.count() 统计 str 在 string 里面出现的次数
.title() 每个单词首字母大写中间用特殊字符隔开(中文算特殊字 .startswith() 以什么开头
.endswith() 以什么结束
.isalnum() 是否数字和字母
.isupper() 是否是全大写
.islower() 是否是全小写
2.列表
以[ ]括起来,每个元素以逗号隔开,而且里面可以存放各种数据类型,是可迭代的可变数据.
方法:
增加:
. append( ) #追加 默认添加元素进列表最后 列表的嵌套
. insert ( ) #插入 括号里前面放插入的位置(索引),后面是插入的内容
.extend( ) #扩展 只能进行迭代添加, 只能在添加到后面,后面添加可迭代对象
以及+(两个列表相加2)和*列表和整形相乘
删除:
.remove() #移除 通过放在括号里的指定元素进行删除.,后面只能加入一个删除参数.只能删除一个.
.pop( ) #弹出 默认删除最后一个. 后面可以加元素的索引指定删除的元素
l = lst.pop() l是返回值,返回被弹出的的元素
.clear( ) 清空 将列表内的元素都删除
del lst 删除整个列表,即将列表删了
del lst [ ] 通过索引删除对应的元素
a= [1,2] a[1] = a #[1,[1,2]] print(a[1]) #[1, [...]]
去除列表重复的元素 lst = [1,2,3,42,3,66,45,66] a = (set(lst)) b = list(a) print(b) print(list(set(lst)))
列表:循环删除删除列表的每一个元素 lst = [1,2,3,4,5] for i in range(len(lst)): lst.pop(0) print(lst) lst = [1,2,3,4,5] lst1 = [] for i in lst: lst1.append(i) for k in lst1: lst.remove(k) print(lst) lst = [1,2,3,4,5] for i in lst: lst.clear() print(lst)
修改:
lst [ ] = ' ' 具体替换, 利用索引
lst[0:5] = ' ' 当一次性改多个元素时,当后面是一个元素时,将该元素分开替换,后面是多个元素时,将多个元素分别替换前面的索引.
查找:
通过for循环查询
其他方法:
.reverse( ) #对列表进行翻转 ,没有赋值
.copy( )
.sort() #按大小对列表进行排序默认升序,对于字母按照单词的首字母按26个字母进行排序,升序, 即按照ASCII进行排序 没有返回值
.sort(reverse=True) #按照单词的首字母按26个字母进行排序,降序
列表嵌套:通过下标查找可进行增删改查方法
3.元组
元组只能进行索引和计数,还可以切片,切片切出来的还是元组.也能循环,就是不能更改元祖的内容,可迭代的不可变数据类型
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合(两个元祖相加),合并是两个的数据类型都应该是tuple
方法:
tu.index( ) #查找 查找元素的下标位置
tu.count( ) #计数 查找元素的个数
三.散点类型(字典,集合)
1.字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据,字典是无序存储的.
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中
字典是无序存储的,且key必须是可哈希(不可变的)的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set
方法:
增:
dic[' '] = ' ' 直接添加.如果这个键不在字典中就是添加,在字典中就是修改
dic.setdefault(' 键',' 值') 如果在列表中键存在就不进行添加,不存在进行添加.如果不写值就默认值为None
删: pop----popitem----del---del[]--dic.clear
字典删除没有remove
.pop(键) #删除这个键所对应的键值对,有返回值 #返回这个键所对应的值
.popitem() #随机删除,在3.6版本以上删除最后一个,3.5及以下版本随机删除有返回值 #返回的是这个键所对应的键值对,以元组的形式输出.第一个是键,第二个是值
del dic #删除整个字典
del dic['键'] #通过键删除一个键值对
.clear() #清空
改:
dic['键'] ="值" #如果这个键在字典中就是修改,不在就是添加
dic1.update(dic2) #更新 当update中的字典里没有dic中键值对就添加到dic字典中,如果有就修改里边的对应的值
查:
dict.get(key, default=None) #查询的是键所对应的值,如果没有该建,则默认返回None,返回值可以自己定义.
print(dic['键']) #也是查询键所对应的值,但是没有该键,则报错.
dic = {'a':1,'b':2} dic1 = {} #通过建立一个新的字典 for i in dic: dic1[i] = dic[i] #规避for的循环机制 for i in dic1: dic.pop(i) print(dic1)
其他操作:
.keys() #对应字典的键 以元组的方式将键放在一个高仿列表里
.value() #对应字典的值 以元组方式将值放在一个高仿列表里
.items() #对应字典的键值对 以元组形式将键值对放在一个高仿列表里之所以叫高仿列表是因为无索引所以叫高仿
for k,v in dic.items(): #通过解构赋值
print('这是键',k)
print('这是值',v)
字典for循环中不能做添加,删除
fromkeys:(生成一个字典)
dic = dict.fromkeys(['天涯','明月','海角','welkin'],['流星','蝴蝶']) # fromkeys 第一是键 第二是值 print(dic) #{'天涯': ['流星', '蝴蝶'], '明月': ['流星', '蝴蝶'], '海角': ['流星', '蝴蝶'], 'welkin': ['流星', '蝴蝶']}
2.集合
集合是无序的,不重复的数据集合,但是集合本身是不可哈希(所以集合做不了字典的键)的.
定义是 s = {} #当里面没有元素的时候表现为字典数据类型
s = {} #空的{}代表空的字典,而不是集合 print(type(s))
集合有两个点:
天然去重
关系测试,测试两组数据之前的交集、差集、并集等关系.
增:
.add() #指定元素添加
.update() #迭代添加 无序
删:
.pop() #随机删除
.clear()
del set
.remove() #通过元素指定删除
改: #先删在填即为该
.remove()
.add()
查:(for循环查找)
其他操作 交集 a={1,2,3,4,5} b={4,5,6,7,8} print(a&b) #{4, 5} 交集 并集 a={1,2,3,4,5} b={4,5,6,7,8} print(a|b) #{1, 2, 3, 4, 5, 6, 7, 8} 并集 差集 a={1,2,3,4,5} b={4,5,6,7,8} print(a-b) #{1, 2, 3} 差集 反交集 a={1,2,3,4,5} b={4,5,6,7,8} print(a^b) #{1, 2, 3, 6, 7, 8} #反交集 并集-重复的 子集和超集 a={1,2,3} b={1,2,3,4,5} print(a<b) # a是b的子集 print(b>a) #b是a的超集
frozenset不可变集合,让集合变成不可变类型 s = frozenset('carry') print(s,type(s)) # frozenset({'a', 'c', 'r', 'y'}) <class 'frozenset'>
四.基础数据类型转换
数据类型:str,int,bool,list,dict,tuple,set
所有数据都可以转化成字符串
其他数据类型不能转化成字典
list(set) #集合转换成列表
set(list) #列表转化成集合
list(tu) #元组转列表
set(tu) #元组转集合
tuple(set) #集合转元组
list(str) #字符串转化成列表 迭代形式的列表
set(dic) #字典转化集合 输出键组成集合
bool(" ") #True
bool("") #False
bool(""或0或None或空[]或空字典{}或空()或空集合{}) #输出的结果都是False
将小数转化成整数:
int(float)
round(float)
print("%.0f"%float)
练习区域:
字符串练习 i = "welkin" #验证码不区分大小写应用场景 yzm = input("请输入验证码:") if yan.lower() == yzm.lower(): print("验证成功") else: print("验证失败") user= input("请输入用户名:").strip() #应用场景:登录账号时,用户名和密码多按空格 pwd = input("请输入密码:").strip() if user == "welkin" and pwd == "123456": print("登陆成功") else: print("登录失败")
name = '{2}老师真{1}{0}' s = name.format('某某','是','漂亮') print(s) #漂亮老师是某某 按照format括号内的索引添加 name = '{}老师真{}{}' s1 = name.format('某某','是','漂亮') print(s1) #某某老师是漂亮 #按照format括号内的顺序添加 name = '{a}老师真{b}{c}' s2 = name1.format(a ='某某',b= '是',c='漂亮') print(s2) #某某老师是漂亮
# 字符串抓换成列表 a = "alexcellshell" b = a.split() print(b) #['alexcellshell'] c = a.split("e") print(c) #['al', 'xc', 'llsh', 'll'] lis = ["1","2","3"] a = "_".join(lis) print(a,type(a)) #1_2_3 <class 'str'>