一、数据可变不可变类型
- 可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型
l = ['a', 'b']
print(id(l))
l[0] = 'A'
print(l)
print(id(l))
- 不可变类型:值改变,但是id跟着变化,证明就是产生了新的值,是可变类型
x=9
print(id(x))
x=10
print(id(x))
二、数字类型
(一)、整型int
-----------------------基本使用------------------------
1、用途:记录年龄、等级、数量
2、定义方式
age = 10 # age=int(10)
3.数据类型转换:只能将纯数字的字符串转成int
x=int(‘123’)
print(x,type(x))
x = int('12.3') # 报错
(二)、浮点型float
-----------------------基本使用------------------------
1、用途:记录身高、薪资、体重
2、定义方式
salary = 10.1 # salary=float(10.1)
3.数据类型转换:只能将包含小数点的字符串转成int
x=float(‘3.1’)
print(x,type(x))
----------------------该类型总结----------------------
- 存一个值
- 不可变
三、字符串类型
-----------------------基本使用------------------------
1、用途:记录描述性质的状态
2、定义方式:在单引号,双引号,三引号内包含一串字符串
msg=“你好” # msg=str(“你好”)
3.数据类型转换:所有类型都可以被str转换成字符串类型
res=str([1,2,3])
print(res,type(res))
4.常用操作和内置的方法
优先掌握的操作:
(1)按索引取值(正向取+反向取) :只能取
msg = 'hello'
print(msg[0],type(msg[0])) # h <class 'str'>
print(msg[-1]) # o
msg[0]='H' # 会报错,无法修改,只能取
(2)切片(顾头不顾尾,步长)
msg = 'hello world'
msg[0:3] # hel 步长默认为1
msg[:;2] # hlowrd 步长设为2
msg[:] # hello world 全取
msg[-1:-12:-1] # 反向取 dlrow olleh 初始和结尾(-1,-12)可不写
(3)长度len
msg = 'hello world'
print(len(msg)) # 11
(4)成员运算in和not in:判断一个子字符串是否存在于大字符串中
msg = 'mu is nb'
print('nb' in msg) # True
print('mu'not in msg) # False
print(not ' 'in msg) # False
(5)移除空白strip:用来去除字符串左右两边的字符,不指定默认去除的是空格
# he llo 字符中间的空格不能删除
print(' he llo '.strip())
# hello 另一种使用方式
msg = ' world '
print(msg.strip())
# moon 指定删除字符
print('*******moon******'.strip('*'))
# moon 指定删除多个字符
print('*/+****moon***+-**'.strip('*+/-'))
(6)切分split:针对有规律的字符串,按照某种分隔符切成列表
# 结果是['mumoon', '18', 'male'] <class 'list'>
mumoon 18
info='mumoon:18:male'
res=info.split(':')
print(res,type(res))
print(res[0],res[1])
# 结果是['get', 'a.txt|33333'] 指定分隔次数
cmd='get|a.txt|33333'
print(cmd.split('|',1))
(7)join()
用:号作连接符号将纯字符串的列表拼接成一个字符串’mumoon:18:male’
方法一:
l = ['mumoon', '18', 'male']
res=l[0]+':'+l[1]+':'+l[2]
print(res) # mumoon:18:male
方法二:
res = ':'.join(l)
print(res) # mumoon:18:male
(8)循环
for item in 'hello':
print(item) # h
e
l
l
o
需要掌握的操作:
(1)strip,lstrip(删左),rstrip(删右)
print('******mumoon***********'.strip('*')) # mumoon
print('******mumoon***********'.lstrip('*')) # mumoon***********
print('******mumoon***********'.rstrip('*')) # ******mumoon
(2)lower(字母变小写),upper(字母变大写)
print('AbC123'.lower()) # abc123
print('AbC123'.upper()) # ABC123
(3)startswith(以X开头),endswith(以X结尾)
msg='mumoon is nb'
print(msg.startswith('mu')) # True
print(msg.endswith('s')) # False
(4)format的三种玩法
res='my name is %s my age is %s' %('mumoon',18)
print(res)
实现上面的功能我们还可以使用格式化输出format。
res='my name is {name} my age is {age}'.format(age=18,name='mumoon')
print(res)
res = 'my name is {} my age is {}'.format('mumoon', 18)
print(res)
res = 'my name is {0}{1} my age is {1}{1}{1}{1}'.format('mumoon', 18)
print(res)
(5)split,rsplit
msg='a:b:c:d'
print(msg.split(':',1)) # ['a', 'b:c:d']
print(msg.rsplit(':',1)) # ['a:b:c', 'd']
(6)replace(“需要改的值”,“要改成的值”,改的次数)
msg = 'mumoon is mumoon hahahah'
res = msg.replace('mumoon', 'Hysen', 1)
print(res) # Hysen is mumoon hahahah
(7)isdigit:判断字符串是由纯数字组成
print('123123'.isdigit()) # True
print('123123 '.isdigit()) # False
print('123123asdf'.isdigit()) # False
print('12312.3'.isdigit()) # False
需要了解的操作:
(1)、find,rfind,index,rindex,count
print('123 ke123ke'.find('ke')) # 4
print('123 ke123ke'.rfind('ke')) # 9
print('123 ke123ke'.index('ke')) # 4
print('123 ke123ke'.rindex('ke')) # 9
print('123 ke123ke'.find('xxxx')) # 返回-1
print('123 ke123ke'.index('xxxx')) # 会报错
print('123 ke123ke'.count('ke',0,6)) # 1 在0到6区间内寻找出现次数
(2)、center,ljust,rjust,zfill
print('mu'.center(6)) # mu 默认空格
print('mu'.ljust(6,'*')) # mu****
print('mu'.rjust(6,'*')) # ****mu
print('mu'.rjust(6,'0')) # 0000mu
print('mu'.zfill(6)) # 0000mu 只能用0填充
(3)、expandtabs
改变tab缩进数
(4)、captalize,swapcase,title
print('abcdef dddddd'.capitalize()) # Abcdef dddddd 第一个单词首字母大写
print('abcAef dddddd'.swapcase()) # ABCaEF DDDDDD 大小写反转
print('abcAef dddddd'.title()) # Abcaef Dddddd 每个单词的首字母大写
(5)、is数字系列
num1 = b'4' # bytes
num2 = '4' # unicode,python3中无需加u就是unicode
num3 = '四' # 中文数字
num4 = 'Ⅳ' # 罗马数字
bytes与阿拉伯数字组成的字符串
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
阿拉伯数字组成的字符串
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())
阿拉伯数字\中文\罗马组成的字符串
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())
(6)、is其他
----------------------该类型总结----------------------
- 存一个值
- 有序
- 不可变
三、列表
-----------------------基本使用------------------------
1、用途:按照位置记录多个值,索引对应值
2、定义方式:在[]内用逗号分隔开多个任意类型的值
l=['a',11,11.3,] # l=list(['a',11,11.3,])
3.数据类型转换:但凡能够被for循环遍历的数据类型都可以传给list,被其转换成列表
res1=list('hello')
print(res1) # ['h', 'e', 'l', 'l', 'o']
res2=list(123)
print(res2) # 报错
res=list({'a':1,'b':2,'c':3})
print(res) # ['a', 'b', 'c']
4、常用操作和内置的方法
优先掌握的操作:
(1)按索引存取值(正向存取+反向存取):即可存也可以取
l=['a','b','c','d','e']
print(l[0])
print(l[-1])
print(id(l))
l[0]='A'
print(id(l)) # 证明是可变类型
强调:对于不存在的索引会报错
l[5]='AAAA' # 会报错
字典可以添加不存在的Key值以及对应的value
dic={"k1":111}
dic['k2']=2222
print(dic) # {'k1': 111, 'k2': 2222}
(2)切片(顾头不顾尾,步长)
l=['a','b','c','d','e']
print(l[1:4])
print(l[::-1])
(3)长度
l=['a','b','c','d','e']
print(len(l)) # 5
(4)成员运算in和not in
l=['a','b','c','d','e']
print('a' in l) # True
(5)追加与insert
l=['a','b','c','d','e']
l.append('xxx')
l.append('yyy')
print(l) # ['a', 'b', 'c', 'd', 'e', 'xxx', 'yyy']
l.insert(0,'xxxx')
print(l) # 指定位置添加 ['xxxx', 'a', 'b', 'c', 'd', 'e', 'xxx', 'yyy']
(6)删除
l=['a','bbb','c','d','e']
del是一种通用的删除操作,没有返回值
del l[0]
print(l) # ['bbb', 'c', 'd', 'e']
dic={'k1':1}
del dic['k1']
print(dic) # {}
l.remove(指定要删除的那个元素),没有返回值
res=l.remove('bbb')
print(l) # ['a', 'c', 'd', 'e']
print(l.remove('bbb')) # 报错
l.pop(指定要删除的那个元素的索引),返回刚刚删掉的那个元素
l=['a','bbb','c','d','e']
l.pop(-1)
res=l.pop(1)
print(l) # ['a', 'c', 'd']
print(res) # bbb
(7)循环
l=['a','b','c','d','e']
for item in l:
print(item)
需要掌握的操作
(1)clear,append和extend
l=['aaa','bb',345]
l.clear() # 清除列表
l.append([1,2,3]) # [[1, 2, 3]] 整个列表当做一个元素
不同之处
l.extend([1,2,3]) # 列表中的每个元素取出来,加进去
上面代码等同下面的功能
for i in [1,2,3]:
l.append(i)
(2)reverse:反转
只有在类中中所有元素都是同种类型的情况下才能用sort排序
l=[1,3,2]
l.sort() # [1, 2, 3]
l=['z','d','a']
l.sort()
print(l) # ['a', 'd', 'z']
----------------------该类型总结----------------------
#存多个值
#有序
#可变