python学习日记——基本数据类型
1.运算符
赋值运算符:
= -= += 等等
数学运算符:
+ - * / ** % //
成员运算符:
判断某个东西是否在某个东西里面包含
in not in
例如:
#字符串
name="飞天小一" #字符: n1="飞" #子序列/子字符串: n2="飞天" if n1 in name: print("success") else: print("fail") #输出为success if n1 not in name: print("success") else: print("fail") #输出为fail
数据类型:数字、字符串、布尔值(True/False)
比较运算符:
布尔值:
True 真
False 假
等于:==
大于:>
小于:<
大于等于:>=
小于等于:<=
不等于:!= 或 <>
逻辑运算符:
取反:not 例如not True返回False
且:and
或:or
顺序:从前到后一个一个算
user=”ftxy" pwd="123" v= user=='ftxy' and pwd='123' or 1==1 and pwd='test' print(v) #输出True
解释:and连接的前面如果是False,就不会判断后面的表达式,直接返回False;or前面连接的如果是True,就不会判断后面的所有内容,直接返回True;所以要自定义顺序的话必须加括号
2.基本数据类型
具体方法及属性control+右键查看
数字(int):
num=123
print(num.bit_length()) #输出数字转换为二进制后的位数
int(str) 将字符串转为数字
type(object) 查看对象类型
a='A' b=int(a,base=16) #输出10;含义为将字符串是16进制,将其转化为10进制的整形
print(b.bit_length) #输出整形所占内存空间的位数
字符串(str):
str(object) 强转为字符串
常用的方法:join、split、find、strip、upper、lower、replace(解释及其他部分方法如下)
name="ftXy" #首字母大写 print(name.capitalize()) #全部转换为小写 print(name.casefold()) #第一个参数代表要生成的字符串总长度,第二个是填充时候用的字符(若没有默认用空格填充) print(name.center(20,"*"))#放中间 name.ljust(20,"*") #放左边 name.rjust(20,"*") #放右边 #统计字符在字符串中出现的次数(支持子序列,可以定义起始位置) print(name.count("f")) name.encode 编码 name.decode 解码 判断是否以xxx结尾或开始 print(name.endswith("")) print(name.startwith("")) #从字符串中寻找x的位置并返回,可以定义寻找的起始位置;未找到返回-1 print(name.find("x")) #字符串变量替换,如下面案例输出为I am ftxy,19 test="I am {name},{age}" print(test.format(name="ftxy",age=19)) print(test.format_map({name:"ftxy",age:19})) #传入字典 #占位符替换 test="I am {0},{1}" print(test.format("ftxy",19)) #判断字符串是否只有数字与字母 print(name.isalnum()) #判断字符串是否只有字母,判断是否是数字(常用isdecimal),判断是否是数字(可判断②),判断是否是数字(可判断二) print(name.isalpha(),name.isdecimal(),name.isdigit(),name.isnumeric()) #制作表格,括号中的参数即对字符串进行的分隔数,不足的\t填充对应空格 print(test.expandtabs(5)) #判断是否可以原样输出;如果存在\t这种转译字符则返回False name.isprintable() name.istitle() #判断是否标题,每个单词首字母都需要大写 name.title() #变成标题 name.isupper() #判断是否大写 name.islower() name.upper() #变成大写 name.lower() "test".join(name) #将name中的字符用test这个分隔符隔开,参数name可以是列表、元组等 #去除字符串中与传参相同的子序列;移除指定字符串 name.strip('xy') name.rstrip() #从右边开始去除 name.lstrip() #从左边开始去除 #批量替换demo,将name中的f替换为j mt=str.maketrans("f","j") name.translate(mt)
name.replace("f","j",1)#将name中的f替换为j,只替换第一个 name.partition() #按照传入参数分隔,不可指定个数,但是能拿到分隔符 name.split() #按照传入参数分隔成列表;默认按照空格分隔,可以指定分隔的个数 #定义方法时,方法中的参数有=的调用时可以不带参数(方法count中,sub参数必须有,start与end参数可以没有) def count(self, sub, start=None, end=None)
基本操作(其他数据类型也可以用):
通过索引及下标获取字符串中某一个字符:name[0]
获取子序列:获取第1到第2个子序列 name[0:2] 获取第2到最后一个子序列 name[1:-1]
获取字符串长度:len(str)
for循环:for 变量名 in 字符串
注:字符串一旦创建则会在内存里长期存在,不可修改;一旦修改或拼接,都会重新生成字符串;没人用了才会被回收
结束整个循环:break
结束本次循环:continue
帮助创建数字:range(start,end,步长)
#打印用户输入内容及索引 name=input("请输入姓名:") length=len(name) for i in range(length): print(i,name[i])
列表(list):
内存中是以链表的形式储存:列表是有序的,元素可以被修改
创建:li=[1,2,"test"] #列表中的元素可以是数字、字符串、列表、布尔值、字典、元组等所有类型
#索引取值 li[1] #切片取值,切片结果也是列表 li[1:-1] #for循环取值 #while循环取值
#修改(索引方式修改)
li[1]=222
#修改(切片方式修改)
li[1:2]=222
#删除(索引方式删除)
del li[1]
#删除(切片方式删除)
del li[1:2]
支持in 和 not in操作
可迭代的对象才能转化为列表:字符串可迭代,所以能转 list(str) ;数字不可迭代,所以不能转换为列表
列表转字符串需要自己写方法一个一个处理;如果列表中只包含字符串,那么可以"".join(list)进行拼接操作
li=[] #向列表中追加元素,返回值为None li.append() li.insert(0,99) #在第0个位置插入元素99 #清空列表元素 li.clear() #复制 li.copy() #计算元素出现的次数,必须传入value li.count(2) #通过迭代的方式追加元素,传参为可迭代对象;注意与append的区别 li.extend() #根据传入值获取当前值索引位置,从左边开始找 li.index() #删除某个值并返回删除的值;默认删除最后一个,可以传参指定索引删除 li.pop() #根据元素内容删除 li.remove() #当前列表反转 li.reverse() #列表排序,默认从小到大,倒序需要添加参数reverse=True li.sort()
元组(tuple):
创建:tu=(111,22,33,"tester") 创建元组时推荐在最后加个逗号;是对列表的补充,不支持增加、删除;元组的第一级元素不能修改
支持索引取值及切片取值,支持for循环遍历
元组、列表、字符串 三者间可以相互转换
方法:tu.count() tu.index()
字典(dict):
创建:info={key:value,key1:value1} 字典是无序的;True在key中时会与1重复
常用的:keys() values() items() get()
items()方法用于返回dict的(key,value)元组对的列表
字典中key值的类型:int、str、tuple、bool——此四种类型可以进行hash操作,所以可以作为key值 ;而列表及字典不能作为key
#for循环,默认根据key循环 for k,v in info.items(): print(k,v)
dict.fromkeys(keys,value)
#根据key获取value,如果key不存在,返回给定值;默认给定值为None
dic.get("k1","key不存在时返回的默认值")
#删不掉的时候返回指定默认值
dic.pop("k1","key不存在时返回的默认值")
dic.setdefault(key,value)
dic.update(dic)
布尔值(bool)