八、数据类型与内置方法

一、整型:

======================================基本使用======================================
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]))

二、浮点类型:

======================================基本使用======================================
1、用途: 记录身高\体重\薪资

2、定义方式
salary=1.3 #salary=float(1.3)

x=float('3.1')
print(x,type(x))

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

======================================该类型总结====================================
存一个值

不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
x=3.1
print(id(x))
x=3.2
print(id(x))


了解:
复数
x=1-2j
print(x,type(x))
print(x.real)
print(x.imag)

长整型


其他进制=>十进制
十进制: 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^0

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

三、字符串类型:

# ======================================基本使用======================================
# 1、用途:记录描述性质的特征,比如名字\地址\性别

# 2、定义方式:在单引号\双引号\三引号内包含的一串字符
msg='aaa"bbb"' #msg=str(...)

可以将任意类型转换成字符串
str(1)
str(1.3)
x=str([1,2,3])
print(x,type(x))

3、常用操作+内置的方法
优先掌握的操作(*****)
1.按索引取值(正向取+反向取):只能取不能改
msg='hello world'
print(msg[0])
print(msg[5])
print(msg[len(msg)-1])
print(msg[-1])
#2、切片(顾头不顾尾,步长): 想要从一个大字符串中切出一个小字符串
msg='hello world'
print(msg[0:5])
print(msg)
print(msg[0:5:2]) 

#了解
msg='hello world'
print(msg[-1:-5:1])
print(msg[-1:-5:-1]) 
print(msg[0:5:1])

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=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、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
# s1='hello'
# print(id(s1))
# s1='world'
# print(id(s1))

4、需要掌握的操作(****)
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'))
print('alex is sb'.endswith('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))
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')

5、了解的操作(**)

1、find,rfind,index,rindex,count
msg='hello worldaa'
print(msg.index('wo'))
print(msg.index('wo',0,3))
print(msg.find('wo',0,3))
print(msg.find('xxxxxxx'))
print(msg.index('xxxxxxx'))
print(msg.count('l'))
2、center,ljust,rjust,zfill
name=input('>>: ').strip()
print('egon'.center(50,'='))
print(('%s' %name).center(50,'-'))

print('egon'.ljust(50,'='))
print('egon'.rjust(50,'='))
print('egon'.zfill(50))
3、expandtabs
print('hello\tworld'.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())

四、列表类型:

# ======================================基本使用======================================
# 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、长度
li=['a','b','c','d']
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、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
# print(hash([1,2,3]))

4.需要掌握的操作
1.统计元素在列表出现的次数count
li=['a','b','c','d','c','e']
print(li.count('c'))
2.将一个列表拆分后加入到另一个列表中extend,
li=['a','b','c','d','c','e']
li.extend([1,2,3])
li.append([1,2,3])#append是整体加入到列表中
print(li)
3.取到制定元素在列表所对应的索引index,可设置范围
li=['a','b','c','d','c','e']
print(li.index('z'))
print(li.index('b'))
print(li.index('d',0,3))
4.在制定的索引位置添加一个元素到列表中insert
li=['a','b','c','d','c','e']
li.insert(1,'egon')
print(li)
5.把列表从尾到头,从新排列reverse
li=['name','age','sex']
li=[3,1,9,11]
li.reverse()
print(li)
6.给列表从左到右的排序sort(数字按从小到大,字母元素安照首字母大小排列)
li=[3,1,9,11]
li=['name','age','sex','hobbies']
li.sort()
print(li)

 

五、元组类型:

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

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

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

t=(1,3.1,'qqq',[1,2,3],{'k1':2.'k2':3})

当元组只存一个值的时候,最后要加一个逗号

t=('hello',)

3.常用的操作+内置方法

优先掌握的操作:

#优先掌握的操作:
#1、按索引取值(正向取+反向取):只能取
# t=('a','b',1)
# t[0]=111
#2、切片(顾头不顾尾,步长)
# t=('h','e','l','l','o')
# res=t[1:3]
# print(res)
# print(t)
#3、长度
# t=('h','e','l','l','o')
# print(len(t))
#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)
#按值取索引号和按值计算元素次数
# t=('a','b','a')
# print(t.index('a'))
# t.index('xxx')
# print(t.count('a'))
# ======================================该类型总结====================================
# 存多个值

# 有序

# 不可变(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]))

六、字典类型:

# ======================================基本使用======================================
# 1、用途: 用来存放多个(不同种类的)值
#
# 2、定义方式: 在{}内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来
# 描述value的,所以key通常是字符串类型,但其实key必须是不可变的类型(int\float\str\tuple)
# 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
# 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)
# 需要掌握的操作
# 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)
# ======================================该类型总结====================================
# 存多个值

# 无序

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

七、集合类型:

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']
# l=[]
#
# for stu in pythons:
#     if stu in linuxs:
#         l.append(stu)
# print(l)
# 集合的第一大用途: 关系运算
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))
# ======================================该类型总结====================================
# 存多个值

# 无序

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













posted @ 2018-09-17 17:19  Maple_feng  阅读(306)  评论(0编辑  收藏  举报