zoukankan      html  css  js  c++  java
  • 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可变

    
    
  • 相关阅读:
    week4:周测错题
    小程序1:登录/注册小程序
    小程序2:实现一个购物车
    day26:装饰器&面向对象当中的方法&property
    day25:7个魔术方法&5个关于类的魔术属性
    day24:多态&魔术方法__new__&单态模式
    day23:单继承&多继承&菱形继承&__init__魔术方法
    day22:面向对象封装对象操作&类操作&面向对象删除操作
    day21:正则函数&模块和包(import)
    APP探索之iAPP
  • 原文地址:https://www.cnblogs.com/gongcheng-/p/9669786.html
Copyright © 2011-2022 走看看