1 #可变类型: 值变了,但是id没有变,证明没有生成新的值而是在改变原值,原值是可变类型
#不可变类型:值变了,id也跟着变,证明是生成了新的值而不是在改变原值,原值是不可变
1 int 不可变类型 2 float 不可变类型
# x=10
# print(id(x))
# x=11
# print(id(x))
#
y=['a','b','c']
print(id(y))
y[0]='A'
print(y)
print(id(y))
# 了解:
# 复数
# x=1-2j
# print(x,type(x)) 类型是复数
# print(x.real) 实施
# print(x.imag) 虚数
2 str 字符串类型的一些取值方法 ( )可以把一个字符串分两行打印
# 3、常用操作+内置的方法
#优先掌握的操作(*****):
#1、按索引取值(正向取+反向取) :只能取
msg='hello world'
# print(msg[0])
# print(msg[5])
# print(msg[len(msg)-1])
# print(msg[-1])
# msg[0]='H'
#2、切片(顾头不顾尾,步长): 想要从一个大字符串中切出一个小字符串
# msg='hello world'
# print(msg[0:5])
# print(msg)
# print(msg[0:5:2]) #0 2
print(msg[-1::-1]) #掌握 负向全部取值
#3、长度len
# msg='你好啊a'
# print(len(msg))#打印字符范围
#4、成员运算in和not in
msg='yangyuanhu 老师是一个非常虎的老师'
# print('yangyuanhu' in msg)#判断 这个数字是否在值里
# print('虎' not in msg)#判断这个是否不在这个值里
# print(not '虎' in msg)
#5 移除字符串左右两边的字符strip:默认去空格可以去除去想去的内容两边开始去除碰到不是除去的内容停止
# pwd=' 1 23 '
# res=pwd.strip(' ')
# print(res)
# pwd='****/&^**123**^*/*&'
# print(pwd.strip('*/&^'))
# print(pwd.strip('*/&')) #^**123**^
#6、切分split:针对有规律字符串按照某个字符切成列表
# info='yyhdsb|18|female'
# li=info.split('|',1)#
# print(li)
#7、for循环
# msg='hello'
#
# for item in msg:
# print(item)
#1、strip,lstrip,rstrip
# print('****egon***'.strip('*'))#去除两边的*号
# print('****egon***'.lstrip('*'))#去除左边的*号
# print('****egon***'.rstrip('*'))#去除右边的*号
#2、lower,upper
# print('AAAbbbb'.lower())#所有字符缩小
# print('AAAbbbb'.upper())#把所有字符放大
#3、startswith,endswith
# print('alex is sb'.startswith('alex'))#alex 是否以alex这个开头
# print('alex is sb'.endswith('sb'))#是否以sb结束
#4、format的三种玩法
# print('my name is %s my age is %s' %('egon',18))
# print('my name is %s my age is %s' %(18,'egon'))
# print('my name is {name} my age is {age} '.format(age=18,name='egon'))#把值传过去
# 了解
# print('my name is {} my age is {} '.format(18,'egon'))
# print('my name is {0} my age is {1} '.format(18,'egon'))
# print('my name is {1} my age is {0} '.format(18,'egon'))
#5、split,rsplit
# msg='a:b:c:d:e'
# print(msg.split(':',1))#从左边开始分开成列表
# print(msg.rsplit(':',1))#从右边开始分成列表
#6、join
# msg='a:b:c:d:e'
# list1=msg.split(':')
# msg1=':'.join(list1)#用其他字符串的内容加入到其中,列表里的逗号可以替换
# print(msg1)
# info='egon:123:male'
# list1=info.split(':')
# print(list1)
# print(':'.join(list1))
#7、replace(更换)
# msg='alex is alex alex is hahahaha'
# print(msg.replace('alex','SB',1))#把旧的值alex更换成新的值sb,更换数为一个
#8、isdigit 用来判断字符串里是否为纯数字
# print('123'.isdigit()) # 只能判断纯数字的字符串
# print('12.3'.isdigit())
# age_of_db=30
# inp_age=input('>>>: ').strip()
# if inp_age.isdigit():
# inp_age=int(inp_age)
# if inp_age > age_of_db:
# print('too big')
# elif inp_age < age_of_db:
# print('too small')
# else:
# print('you got it')
# 了解的操作(**) find,rfind index rindex couont
#1、find,rfind,index,rindex,count
# msg='hello worldaa'
# print(msg.index('wo')) # index方法如果字符串里没有这个字符会报错
# print(msg.index('wo',0,3)) #后面2个是索引范围
# print(msg.find('wo',0,3))# find 方法里若果字符串里没有这个字符串会显示-1
# print(msg.find('xxxxxxx')) #后面2个是索引范围
# print(msg.index('xxxxxxx'))
# print(msg.count('l'))#查找这个字符在字符串里有多少
#2、center,ljust,rjust,zfill
# name=input('>>: ').strip()
# print('egon'.center(50,'='))#字符两边用什么字符居中,这个表示用=把egon这个字符剧中数量为50
# print(('%s' %name).center(50,'-'))
# print('egon'.ljust(50,'='))#把字符显示在左侧 数量50个 =
# print('egon'.rjust(50,'='))#把字符显示在右侧 数量50个 =
# print('egon'.zfill(50))#把字符在右侧显示 其他符号为50个数字0
#3、expandtabs
# print('hello world'.expandtabs(5)) 在字符中加多少个空格
#4、captalize,swapcase,title
# print('hello world'.capitalize())#第一个首字母变大写
# print('Hello world'.swapcase())#大写变小写小写变大写
# print('Hello world'.title())#把用字母之前分隔开的的首字母变大写
#5、is数字系列
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字
#isdigit: #可以识别bytes,str
# print(num1.isdigit())
# print(num2.isdigit())
# print(num3.isdigit())
# print(num4.isdigit())
#isdecimal:#可以识别str
# print(num2.isdecimal())
# print(num3.isdecimal())
# print(num4.isdecimal())
#isnumberic:str,#可以识别中文罗马
# print(num2.isnumeric())
# print(num3.isnumeric())
# print(num4.isnumeric())
#6、is其他
# print('aaasdfaA'.isalpha()) # 判断字符串是否纯字母组成的字符串
# print('aaasdfaA123'.isalnum()) #判断字符串字母或数字组成
# print('aaasdfaA'.isalnum()) # 字母或数字组成
# print('123'.isalnum())
# print(' '.isspace())#判断是否全部为空格
# print(' 12'.isspace())
3 List目录 一些取值方法和运用
# x=list('hello')
# x=list({'a':1,'b':2,'c':3}
# print(x)
# 3、常用操作+内置的方法
#优先掌握的操作:
#1、按索引存取值(正向存取+反向存取):即可存也可以取
# li=['a','b','c','d']
# print(li[-1])#反向取值
# li[-1]='D'#把最后一位变成D,在范围里
# print(li)
#
# # li[4]='e'
# del li[0]#删除索引为0 的字符
# print(li)
#2、切片(顾头不顾尾,步长)
# li=['a','b','c','d']
# print(li[0:3])
#3、长度
# print(len(li))
#4、成员运算in和not in
# users=['egon','lxx','yxx','cxxx',[1,2,3]]
# print('lxx' in users)#判断是否在目录里
# print([1,2,3] in users)
# print(1 in users)
#5、追加 在目录里附加值 id不变
# li=['a','b','c','d']
# print(id(li))
# li.append('e') #在目录里附加字符e
# li.append([1,2,3]) #在目录里附加列表
#li.append({‘a’:’b’}) #在目录里附加字典
# print(li,id(li))#id不变 ,可变型
#6、删除
# li=['a','b','c','d']
# 按照元素值去单纯地删除某个元素
# del li[1]#以索引删除值
# res=li.remove('c')#以字符串删除值,不获得值
# print(li)
# print(res)
# 按照元素的索引去删除某个元素并且拿到该元素作为返回值
# res=li.pop(1)#以索引删除值获得这个值
# print(li)
# print(res)
#7、循环
# li=['a','b','c','d']
# for item in li:
# print(item)
# ======================================该类型总结====================================
# 存多个值
# 有序
# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
# print(hash([1,2,3]))
# 需要掌握的操作
li=['a','b','c','d','c','e']
# print(li.count('c'))#查出存在几个字符
# li.extend([1,2,3])#可以附加数字[‘asd’]等
# li.append([1,2,3])#附加不了数字可以附加字典等
# print(li)
# print(li.index('z'))#查找该字符的索引是多少,不在里面会报错
# print(li.index('b'))# 找该字符的索引是多少
# print(li.index('d',0,3))#在索引0~3范围内查找也是顾头不顾尾
# li.insert(1,'egon')#在第一个索引后面穿插字符egon
# print(li)
# li=[3,1,9,11]
# li.reverse()#把目录里的值相反输出
# print(li)
# li.sort(reverse=True)#sort就是进行分类排序,把倒叙的数字进行排序
# print(li)
# 练习
# 队列: 先进先出
# q=[]
# # 入队
# q.append('first') #在目录里添加值
# q.append('second')
# q.append('third')
# print(q)
# # 出队
# print(q.pop(0))#索引取值
# print(q.pop(0))
# print(q.pop(0))
# 堆栈: 先进后出
q=[]
# 入栈
q.append('first')#添加值
q.append('second')
q.append('third')
# 出栈
print(q.pop(-1))#负向索引取值
print(q.pop(-1))
print(q.pop(-1))