Python没有int float这样的关键字,但实际数字的类型是区分int float这样的类型的,使用内建函数type可以查看变量的类型
a = 1 #整数
print(type(a))
a = 1.0 #小数
print(type(a))
a = 10 + 5j #复数
print(type(a))
#字符串的使用
name1 = 'xuxian01' #单引号
print(name1)
name2 = "xuxian02" #双引号
print(name2)
name3 = '''xuxian03''' #三引号
print(name3)
#输出字符串里面想要带有引号
#保证字符串最外层的引号与里面带的引号不一致即可
name4 = '"xuxian"04' #带双引号
print(name4)
name5 = "xu'xian'05" #带单引号
print(name5)
name6 = '''"xu"'xian'06''' #带单双引号
print(name6)
有些不可见字符,需要进行转义,使用\进行转义,比如换行符\n
#换行
str1 = 'hello world \nhahahha'
print(str1)
#想要输出\n,不让它带有换行含义,使用\\n
str2 = 'hello world \\nhhhh'
print(str2)
#字符串切片
name = '你abcdefghklyt'
#单独取一个字符
print(name[0]) #正取,取第一个字符,下标为0
print(name[-1]) #倒取,取最后一个字符,下标为-1
#取一个片段
name ='abcdghjklou'
print(name[0:2]) #左闭右开
print(name[4:7]) #取下标为4-6的字符
print(name[:3]) #省略前面的数字时,从0开始取,取到2
print(name[3:]) #省略后面的数字时,从3开始取,显示后面的所有字符
print(name[:]) #正无穷到负无穷,全部取
#等差取值
name = 'abcdefghyjko'
print(name[::2]) #隔1个字符取一个值
print(name[::3]) #隔2个字符取一个值
print(name[::-3]) #翻转取值
+用于字符串连接运算,*用于字符串重复
name1 = 'guojing'
name2 ='huang rong'
print(name1+name2) #加法:连接字符串,无缝拼接
print(name1,name2) #逗号:有空格
print(name1*4) #乘法:重复4次,只能和正整数相乘,代表重复几次
name ='guojing'
print(len(name)) #获取字符串长度
user_name = '郭靖'
number = 666
print('尊敬的%s用户,欢迎您'%user_name) #单个格式化
print('尊敬的%s用户,您的抽奖编号是%d'%(user_name,number)) #多个格式化
对于一些有特殊含义的字符,我们不希望它有特殊含义,则使用原始字符串解决(在字符串前面加r),打开文件夹时最常用
print(r'hello\nworld')
#字符串合并
b = '-' #b是一个字符串
a = ['aa','bb','cc','dd'] #a是一个列表
print(b.join(a)) #字符串合并
b ='' #b是一个空字符串
print(b.join(a)) #无间隙合并字符串
#字符串拆分
a = 'aa bb cc dd'
print(a.split(' ')) #字符串拆分成列表
b = 'aa-bb-cc-dd'
print(b.split('-'))
进行一个连续的匹配,比如判断是否以某个字符串开头时,只要从开头第一位往后能够连续匹配该字符串(空格也要算),即为true,否则为false
#判断开头结尾,空格不能省
a = 'hello world my name is lily'
print(a.startswith('hello world')) #判断是否以hel开头
print(a.endswith('islily')) #判断是否以world结尾
strip:消除字符串首尾的空格和换行符
#strip:消除字符串首尾的空格和换行符
#备注:print函数本身末尾就自带一个换行符
name = ' guojing huangrong \n'
print(name)
print(name.strip())
返回这个字符串开始的下标
#在字符串中查找子串
name = 'guojing huangrong'
print(name.find('jing')) #如果找到,返回子串第一个字符的下标
print(name.find('is')) #如果没找到,则返回-1
字符串是不可变对象,只能生成新字符串
#替换子串,replace:存在多个相同子串时,会被同时替换
name = 'my name is guojing,guojing'
new_name = name.replace('guojing','huangrong')
print(name) #replace不会改变字符串本身,是临时修改
print(new_name)
关键字 | 含义 |
---|---|
str.isalpha() | 字符串只包含字母时返回true,否则返回false |
str.isdigit() | 字符串只包含数字则返回true,否则返回false |
#判定字符串是字母/数字
a = 'abhjkk'
b = 'adbs1'
c = '12345'
d = '123.5'
print(a.isalpha()) #返回true
print(b.isalpha()) #返回false
print(c.isdigit()) #返回true
print(d.isdigit()) #返回false
a = True
b = False
print(type(a)) #布尔类型
print(type(b))
print(a+6,a*6) #布尔类型运算
print(b+6,b*6)
列表和元组类似于C语言中的数组,使用[]来表示列表,使用()表示元组
列表和元组能保存任意数量、任意类型的Python对象(int float bool等),列表里还可以嵌套列表
可以使用下标来访问里面的元素,下标从0开始,最后一个下标为-1,以逗号分隔
可以使用[:]切片操作得到列表或元组的子集,与字符串操作一样
#列表和元组,里面可以放任意字符类型的元素
liebiao=[1,'hu',1.5,True,[1,2,3],(3,False)] #列表
print(type(liebiao)) #类型是list
print(liebiao[0],liebiao[-1]) #以逗号分隔,有括号的是一个整体
yuanzu=(1,'hu',1.5,True,[1,2,3],(3,False)) #元组
print(type(yuanzu)) #类型是tuple
print(yuanzu[0],yuanzu[-1])
面试很可能会问
列表里面的元素是可以任意被修改的,包括新增、删除、修改,元组里面的子元素是不可以被修改的,但是如果子元素本身是一个可以被修改的对象,比如说列表和字典,我们可以改列表和字典里面的内容,但我们不能把这个元素整个改掉
#元组元素可被修改的情况:元组元素中存在可变对象
yuanzu = (1,'zhang',[1,2,3,4])
print(yuanzu) #修改前
yuanzu[-1][0]=55 #单独写[-1]仍然会报错,需要指定列表里面的元素下标
print(yuanzu) #修改后,列表里面的元素被修改
#列表的修改
liebiao = ['zhang','wang','li','zhao']
print(liebiao[0]) #修改前
liebiao[0] = 'qian' #修改列表
print(liebiao[0]) #修改后
#排序,sorted不会改变a本身的值,sort会改变
a = [1,3,4,2]
print(sorted(a)) #正常默认从小到大排序
print(sorted(a,reverse = True)) #从大到小排,加reverse(反转)
print(a) #a本身不被改变
b= [1,3,4,2]
b.sort() #从小到大排序
print(b) #b本身被改变
b.sort(reverse=True) #从大到小排序
print(b)
#长度排序
a = ['aaaa','bbb','cc','d']
print(sorted(a,key = len)) #按照长度排序,从短到长排
print(sorted(a,key = len,reverse=True)) #从长到短排
#列表新增元素
liebiao = [1,2,'bcbx']
print(liebiao) #新增前
liebiao.append([1,4]) #新增元素
print(liebiao) #新增后
#删除列表元素:del remove
#del:删除指定下标元素
#remove:按值删除元素,一次只能删除1个值,如果要删除多个相同的值,需要执行多次
liebiao = [1,2,'bcbx',1,'3',1,[1,4]]
print(liebiao) #输出原始列表
del liebiao[-1] #del:删除最后一个元素
print(liebiao)
liebiao.remove(1) #按值删除元素,若有多个相同值,则删从前往后数第一个
print(liebiao)
liebiao.remove(1) #想要删除1,需要多次执行这个语句
print(liebiao)
#列表比较大小:列表中的元素从左往右依次比较,且必须是同类型元素比较
#如果字符串与数字比较,会报错
a = ['abc',1233]
b = ['xyz',789]
c = ['abc',823]
print(a<b) #abc
print(b<c) #xyz>abc,故结果为false
print(a>c) #abc=abc,1233>823,故结果为true
print(b>c and a==c) #b>c为true,a==c为false,做and运算,整体结果为false
#字典dict
zidian = {
'ip':'171.2.3.191','user_name':'admin','password':'admin123'}
print(type(zidian)) #字典的类型是dirc
print(zidian) #输出zidian
print(zidian['ip'])
zidian['port'] = 80 #新增字典元素
print(zidian)
zidian['ip'] = '171.2.3.198' #修改字典元素
print(zidian)
关键字 | 含义 |
---|---|
del | 按照key,将key与value这一对同时删除 |
clear | 全部删除,删除之后会变成一个空字典 |
pop | 删除键值对,但可以拿到被删除的值 |
#字典删除的三种方式:del clear pop
zidian = {
'ip':'171.2.3.191','user_name':'admin','password':'admin123'}
del zidian['ip'] #del:按照key,将key与value这一对同时删除
print(zidian)
uname = zidian.pop('user_name') #pop:括号里跟要删除的键值对
print(uname) #与del和clear不同的是,pop可以拿到被删除的值
print(zidian)
zidian.clear() #clear:全部删除,删除之后会变成一个空字典
print(zidian)
zidian = {
'ip':'171.2.3.191','user_name':'admin','password':'admin123'}
print(zidian.keys()) #获取字典中所有的key
print(zidian.values()) #获取字典中所有的value
print(zidian.items()) #同时获取字典中的key和value,将键值对放到一个列表中,每一个键值对是一个元组