python数据类型

一:基本使用

1 用途

2 定义方式

3 常用操作+内置的方法

二:该类型总结

1 存一个值or存多个值

    只能存一个值

    可以存多个值,值都可以是什么类型

2 有序or无序

1、有序:但凡有索引的数据都是有序的

Print (变量名[0])

3 可变or不可变

    !!!可变:值变,id不变。可变==不可hash

!!!不可变:值变,id就变。不可变==可hash

x=10
print(id(x))
x=11
print(id(x))
id不同int不可变,可hash

y=['a','b','c']
print(id(y))
y[0]='A'
print(y)
print(id(y))

id值相同list可变,不可hash

一: 整型int

基本使用
1、用途: 记录年龄等级各种号码

2、定义方式:
age=18 # age=int(18)

x=int('123') #只能将纯数字的字符串转换成整型
print(type(x))
print(int(3.7))

3、常用操作+内置的方法
赋值比较算术

    该类型总结
存一个值

不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
print(hash(10))
print(hash([1,2,3]))

二 浮点型float

基本使用

1 用途:记录身高体重薪资

2 定义方式

salary=1.3 #salary=float(1.3)

x=float('3.1')

print(x,typr(x))#=>3.1 float

3 常用操作+内置方法

赋值比较算术

该类型总结

存一个值

不可变1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)

x=3.1

print(id(x))

x=3.2

print(id(x))

id不同

了解:

复数complex

x=1-2j

print(x,type(x))#=>(1-2j) <class'complex'>

print(x.real)#=>1.0

print(x.imag)#=>-2.0

长整型long

Python2中使用

Python3中无

其他进制=>十进制

十进制:0-9

11=1*10^1+1*10^0

二进制: 0 1

11=1*2^1+1*2^0

八进制:0-7

11=1*8^1+1*8^0

十六进制:0-9 A-F

11=1*16^1+1*16^1

十进制=>其他进制
print(bin(13)) # 十进制=>二进制
print(oct(13)) # 十进制=>八进制
print(hex(13)) # 十进制=>十六进制

三 字符串int

基本使用

1 用途:记录描述性质的特征,比如名字地址性别

2 定义方式:在单引号双引号三引号内包含的一串字符

msg='aaa' "bbb"'#msg=str('aaa"bbb"')

可将任意类型转换成字符串

str(1)

str(1.3)

x=str([1,2,3])

print(x,type(x))#=>[1,2,3] <class'str'>

3 常用操作+内置方法

优先掌握的操作(*****):

1 按索引取值(正向取+反向取):只能取

msg='hellp word'

print(msg[0])#=> h

print(msg[5])#=> 

print(msg(len(msg)-1)#=>d

print(msg[-1])#=>d

msg[0]='H'#=>只能取,不能改

2 切片(顾头不顾尾,步长):想要从一个大字符串中切出一个小字符串

msg='hello word'

print(msg[0:5])#=>hello

print(msg[0:5:2]#=>hlo

了解

msg='hello world'
print(msg[-1:-5:1])
print(msg[-1:-5:-1]) #d l r o
print(msg[0:5:1])

print(msg[-1::-1]) #掌握

3 长度len

msg='你好啊a'
print(len(msg))#=>4

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=input('>>: ').strip() #pwd='123'

if pwd == '123':
print('密码输入正确')

pwd='******12*3****'
print(pwd.strip('*'))

pwd='****/&^**123**^*/*&'
print(pwd.strip('*/&^'))
print(pwd.strip('*/&')) #^**123**^

6、切分split:针对有规律字符串按照某个字符切成列表
info='yyhdsb|18|female'
li=info.split('|',1)
 print(li)

7、循环
 msg='hello'

 for item in msg:
 print(item)


该类型总结

1 存一个值

2 有序

3 不可变

(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
s1='hello'
print(id(s1))
s1='world'
print(id(s1))

id不同不可变,可hash

需要掌握的操作

1 strip,lstrip,rstrip

print('****egon***'.strip('*'))
print('****egon***'.lstrip('*'))
print('****egon***'.rstrip('*'))

2 lower,upper

print('AAAbbbb'.lower())#=>aaabbbb

print('AAAbbbb'.upper())#=>AAABBBB

3 startswith,endswith

print('alex is sb'.startswith('alex'))

print("alex is sb'.endswith('sb'))

4 formall的三种玩法

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,'egpn'))

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))#=>['a','b:c:d:e']

print(msg.rsplit(':',1))#=>['a:b:c:d','e']

6 join

msg='a:b:c:d:e'

list1=msg.split('':)

msg1=':'.jion(list)

print(msg)

info='egon:123:male'

list1=info.split(':')

print(list1)

print(':'.join(list1))

7 replace

msg='alex is alex alex is hahaha'

print(msg.replace('alex','SB',1)

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')

了解的操作(**)

四 列表 list

基本使用

1、用途:记录多个值,比如人的多个爱好

 2、定义方式: 在[]内用逗号分隔开多个任意类型的值

li=[1,2,3]  li=list([1,2,3])

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'

print(li)

li[4]='e'

del li[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、追加

li=['a','b','c','d']

print(id(li))

li.append('e')

li.append([1,2,3])

print(li,id(li))

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 存多个值

2 有序

3 可变(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])#=>['a','b','c','d','e',1,2,3]

li.append([1,2,3])#=>['a','b','c','d','e',[1,2,3]]

print(li)

print(li.index('z'))

print(li.index('b'))

print(li.index('d',0,3))

li.insert(1,'egon')

print(li)

li=[3,1,9,11]

li.reverse()

print(li)

li.sort(reverse=True)

print(li)

练习

队列: 先进先出

q=[]

入队

q.append('first')

q.append('second')

q.append('third')

print(q)

出队

print(q.pop(0))#=>first

print(q.pop(0))#=>second

print(q.pop(0))#=>third

堆栈: 先进后出

q=[]

入栈

q.append('first')

q.append('second')

q.append('third')

出栈

print(q.pop(-1))#=>third

print(q.pop(-1))#=>second

print(q.pop(-1))#=>first

五 元组

什么是元组:元组就是一个不可变的数列

1 用途:用于存放多个值,当存放的多个值只有读的需求没有改的需求最合适,

2 定义方式:在()用逗号分隔开的多个任意类型的值.

t=('aaa','bbb',123,,(1,2,3),['a','b'])#tuple=(....)

res=tuple('hello')

res=tuple({'x':1,'y':2)

print(res)#=>('x','y')

3 常用操作+内置方法

优先掌握的操作:

1 索引取值(正向取+反向取):只能取:

t=('a','b',1)

t[0]=111

print(111,'b',1)

2 切片(顾头不顾尾,步长)

t=('h','e','1','1','o')

res=t[1:3]

print=(res)#=>('e','1' )

3 长度

t=('h','e','l','l','o')

print(len(t))#=>5

4 成员运算in和not in

t=('h','e','l','l','o')

print('h' in t)

5、循环

t=('h','e','l','l','o')
for item in t:
print(item)

  该类型总结
存多个值

有序

不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
t=(1,'a',['x','y','z'])
print(id(t[2]))

print(id(t))
t[2][0]='X'
print(t)
print(id(t))

print(id(t[2]))

list1=['a','b','c']
print(id(list1[0]))
print(id(list1[1]))
print(id(list1[2]))

print('='*50)
list1[1]='B'
print(id(list1[0]))
print(id(list1[1]))
print(id(list1[2]))

掌握的方法
t=('a','b','a')
print(t.index('a'))
t.index('xxx')
print(t.count('a'))

六 字典

  基本使用
1、用途: 用来存方多个(不同种类的)值

2、定义方式: 在{}内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来
描述value的,所以key通常是字符串类型,但其实key必须是不可变的类型(intfloatstr uple)
d={0:'x',1.3:'y','k1':'z',(1,2,3):'aaa'} # d=dict(....)
print(d[(1, 2, 3)])
d1={[1,2,3]:'aaaaa'}

d=dict([('k1',1),('k2',2),('k3',3)])
print(d)

 l=[('k1',1),('k2',2),('k3',3)]
 d={}
 for t in l: #t=('k1',1)
k,v=t
print(k,v)
d[k]=v
print(d)

d=dict(l)
print(d)

d=dict(x=1,y=2,z=3)
print(d)

3、常用操作+内置的方法
优先掌握的操作:
1、按key存取值:可存可取
d={'x':1}
print(d['x'])
print(id(d))
d['x']=1111
print(d)
print(id(d))
d['y']=2222
print(d)

2、长度len
d={'x':1,'y':2,'z':3}
print(len(d))

3、成员运算in和not in#成员运算判断的时key值.
d={'x':1,'y':2,'z':3}
print(1 in d)
print('x ' in d)

4、删除
d={'x':1,'y':2,'z':3}
del d['y']
print(d)

res=d.pop('y')
print(d)
print(res)

res=d.popitem()
print(res)

5、键keys(),值values(),键值对items()
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
print(d.keys())
print(list(d.keys()))

print(d.values())
print(list(d.values()))
print(d.items())
print(list(d.items()))

6、循环

for k in d.keys():
print(k)
for k in d:
print(k)

for v in d.values():
print(v)

for k,v in d.items(): #k,v=('name', 'egon')
print(k,v)


  该类型总结
1 存多个值

2 无序

3 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash


需要掌握的操作
get方法
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
v=d.get('namexxxxxxx')
print(v)

v1=d['namexxxxxxxxxxx']
print(v1)

update方法
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
d.update({'x':1,'name':"EGON"})
print(d)# fromkeys:需求是快速新造出一个字典,value的初始值全都为None,而key是来自于一个列表

keys=['name','age','sex']
d={}
for k in keys:
d[k]=None

d={}.fromkeys(keys,None)
print(d)

setdefault
d={"x":1,"y":2}

按照默认的操作形式
d['x']=1111 # key存在则修改
d['z']=1111 #key不存在则新增

按照setdefault的形式
d={"x":1,"y":2}
res=d.setdefault('x',11111) # 在key存在的情况下不修改值,会返回原值
print(d)
print(res)

res=d.setdefault('z',11111) # 在key不存在的情况下会新增值,会返回新增的值
print(d)
print(res)

练习
s='hello alex alex say hello sb sb'

d={'hello':2,'alex':2,'say':1,'sb':2}

d={}
words=s.split()
print(words) #words=['hello', 'alex', 'alex', 'say', 'hello', 'sb', 'sb']
for word in words: #word= 'alex'
d[word]=words.count(word) #d['alex']=words.count('alex')
d.setdefault(word,words.count(word))
d={'hello':2,'alex':2}

print(d)

# pythons=['egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯']
# linuxs=['欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb']
# l=[]
#
# for stu in pythons:
# if stu in linuxs:
# l.append(stu)
# print(l)

七 集合

1. 什么是集合
在{}内用逗号分隔开多个值,集合的特点:
1. 每个值必须是不可变类型
2. 集合无序
3. 集合内元素不能重复

2. 为何要用集合
1. 用于做关系运算
2. 去重

3. 如何用集合

'''
s={1,1.3,'aa',[1,2,]}
s={1,1.3,'aa'}
print(s)

s={1,1,1,1,1,1,1,2} #s=set(....)

print(type(s))

print(s)

d={'x':1,'x':2,'x':3}

print(d)

res=set('hello')
res=set([1,2,['a','b']])
print(res)

集合的第一大用途: 关系运算
pythons={'egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯'}
linuxs={'欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb'}

1 求同时报名两门课程的学生姓名:交集
print(pythons & linuxs)
print(pythons.intersection(linuxs))

pythons=pythons & linuxs
print(pythons) #{'李铜蛋', '艾里克斯'}
pythons.intersection_update(linuxs) #pythons=pythons.intersection(linuxs)
print(pythons) #{'艾里克斯', '李铜蛋'}

2 求报名老男孩学校课程的所有学生姓名:并集
print(pythons | linuxs)
print(pythons.union(linuxs))

3 求只报名python课程的学生姓名: 差集
print(pythons - linuxs)
print(pythons.difference(linuxs))
print(linuxs - pythons) #求只报名linux课程的学生姓名
print(linuxs.difference(pythons))

4 求没有同时报名两门课程的学生姓名: 对称差集
print((pythons - linuxs) | (linuxs - pythons))
# print(pythons ^ linuxs)
print(pythons.symmetric_difference(linuxs))

5 父子集:指的是一种包含与被包含的关系
s1={1,2,3}
s2={1,2}
print(s1 >= s2)
print(s1.issuperset(s2))
print(s2.issubset(s1))


情况一:
print(s1 > s2) #>号代表s1是包含s2的,称之为s1为s2的父集
print(s2 < s1)

情况二:
s1={1,2,3}
s2={1,2,3}
print(s1 == s2) #s1如果等于s2,也可以称为s1是s2的父集合

综上:
s1 >= s2 就可以称为s1是s2的父集

s3={1,2,3}
s4={3,2,1}
print(s3 == s4)

s5={1,2,3}
s6={1,2,3}
print(s5 >= s6)
print(s6 >= s5)

集合的第二大用途:去重
集合去重的局限性:
1. 会打乱原值的顺序
2. 只能针对不可变的值去重

stus=['egon','lxx','lxx','alex','alex','yxx']
new_l=list(set(stus))
print(new_l)

old_l=[1,[1,2],[1,2]]
set(old_l)

l=[
{'name':'egon','age':18,'sex':'male'},
{'name':'alex','age':73,'sex':'male'},
{'name':'egon','age':20,'sex':'female'},
{'name':'egon','age':18,'sex':'male'},
{'name':'egon','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)

需要掌握的操作:

s1={1,2,3}
s1.update({3,4,5})
print(s1)
print(s1.pop())
print(s1)

s1.remove(2)
print(s1)

s1={1,2,3}
print(id(s1))
s1.add(4)
print(s1)
print(id(s1))

s1={1,2,3}
s1.discard(4)
s1.remove(4)

print(s1)

s1={1,2,3}

s2={4,5}

 print(s1.isdisjoint(s2))

总结
存多个值
无序
set可变


原文地址:https://www.cnblogs.com/gongcheng-/p/9669786.html