zoukankan      html  css  js  c++  java
  • DAY06-Python入门学习-元组、字典、集合类型

    一、元组

    一:基本使用:tuple

    1 用途:

    记录多个值,当多个值没有改的需求,此时用元组更合适

    2 定义方式:

    在()内用逗号分隔开多个任意类型的值

    t=(1,1.3,'xx',('a','b'),[1,2]) #t=tuple((1,1.3,'xx',('a','b'),[1,2]))
    print(t,type(t))
    t1=tuple('hello')
    print(t1)

    3 常用操作+内置的方法

    优先掌握的操作:

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

    t=('egon',123,['a','b'])
    print(id(t[0]))
    print(id(t[1]))
    print(id(t[2]))
    
    t[2][0]='A'
    print('='*50)
    print(id(t[0]))
    print(id(t[1]))
    print(id(t[2]))
    t[0]='EGON'
    
    t[2]='xxxx'
    t[2][0]='A'
    print(t)

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

    t=(1,2,3,4,5)
    print(t[0:3])
    print(t)

    3、长度

    t=(1,2,3,4,5)
    print(len(t))

    4、成员运算in和not in

    t=(1,2,3,4,5)
    print(1 in t)

    5、循环

    for item in ('a','b','c'):
        print(item)

    需要掌握的操作

    t=('a','b','c','a')
    print(t.count('a'))#计算元组中字符出现的次数
    print(t.index('a',1,10))#在元组索引(1,10)中查找字符,有就返回索引,没有报错
    print(t.index('xxx',1,10))

    二:该类型总结

    1 存多个值

    2 有序

    3 不可变

    字典

    不可变类型=》可hash类型
    可变类型 =》不可以hash类型

    一:基本使用dict

    1 用途:

    记录多个值,每一个值都对应的key用来描述value的作用

    2 定义方式:

    在{}内用逗号分隔开多 个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常情况下应该str类型

    dic={0:'aaa',1:'bbb',2:'cccc'} #dic=dict({0:'aaa',1:'bbb',2:'cccc'})
    print(dic,type(dic))
    print(dic[0])
    
    dic={[1,2]:'aaa'}
    dic={(1,2):'aaa'}
    print(dic[(1,2)])

    用法一:

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

    用法二:

    userinfo=[
    ['name','egon'],
    ['age',18],
    ['sex','male']
    ]
    d={}
    for k,v in userinfo: k,v=['name', 'egon']
    print(k,v)
    d[k]=v
    print(d)
    
    d=dict(userinfo)
    print(d)

    3 常用操作+内置的方法

    优先掌握的操作:

    1、按key存取值:可存可取

    dic={'name':'egon'}
    print(dic['name'])
    dic['name']='EGON'
    print(dic)
    dic['age']=18
    print(dic)
    
    l=['a','b']
    l[0]='A'
    l[2]='c'

    2、长度len

    dic={'name':'egon','age':18,'name':'EGON','name':'XXXX'}
    print(dic)
    print(len(dic))

    3、成员运算in和not in:字典的成员运算判断的是key

    dic={'name':'egon','age':18,}
    print(18 in dic)
    print('age' in dic)

    4、删除

    dic={'name':'egon','age':18,}
    #通用
    del dic['name']
    print(dic)
    del dic['xxx']# key不存在则报错
    
    
    res=dic.pop('age') #删除key对应的value,并返回value
    print(dic)
    print(res) 
    dic.pop('xxx')# key不存在则报错
    
    
    res=dic.popitem()#删除字典最后的
    print(dic)
    print(res)

    5、键keys(),值values(),键值对items()

    dic={'name':'egon','age':18,}
    print(dic.keys())
    l=[]
    for k in dic.keys():
        l.append(k)
        print(l)
    print(list(dic.keys()))
    
    print(dic.values())
    print(list(dic.values()))
    print(dic.items())
    print(list(dic.items()))

    6、循环

    dic={'name':'egon','age':18,'sex':'male'}
    
    for k in dic.keys():
        print(k,dic[k])
    
    for k in dic:
        print(k,dic[k])
    
    for v in dic.values():
        print(v)
    
    for k,v in dic.items():
        print(k,v)

    8 dic.get()

    dic={'name':'egon','age':18,'sex':'male'}
    dic['xxx']
    v=dic.get('name')
    print(v)
    
    v=dic.get('xxx')#不存在返回None
    print(v)

    需要掌握的操作

    dic.fromkeys()的用法:

    l=['name','age','sex']
    dic={}
    dic=dic.fromkeys(l,None)#以列表L中的值作为Key,None为每个Key的Value
    print(dic)#{'name': None, 'age': None, 'sex': None}

    dic.update()的用法:

    old_dic={'name':'egon','age':18,'sex':'male'}
    new_dic={'name':'EGON','x':1,'y':2}
    old_dic.update(new_dic)#更新
    print(old_dic)#{'name': 'EGON', 'age': 18, 'sex': 'male', 'x': 1, 'y': 2}

    dic.setdefault:有则不动/返回原值,无则添加/返回新值

    dic={'name':'egon','age':18}
    res=dic.setdefault('name','EGON') #字典中已经存在key则不修改,返回已经存在的key对应的value
    print(dic)
    print(res)
    
    res=dic.setdefault('sex','male') #字典不存在key则添加"sex":"male",返回新的value
    print(dic)
    print(res)

    二:该类型总结

    1 存多个值

    2 无序

    3 可变

    dic={'x':1}
    print(id(dic))#2515662048064
    dic['x']=2
    print(id(dic))#2515662048064


    练习1:

    nums=[11,22,33,44,55,66,77,88,99,90]
    dic={
    'k1':[],
    'k2':[]
    }
    for num in nums:
        if num > 66:
            dic['k1'].append(num)
        else:
            dic['k2'].append(num)
    print(dic) 
    #{'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55, 66]}


    练习2:

    s='hello alex alex say hello sb sb'
    words=s.split()
    dic={}
    print(words)#['hello', 'alex', 'alex', 'say', 'hello', 'sb', 'sb']
    for word in words:
        if word in dic:
            dic[word]+=1
        else:
            dic[word]=1
    print(dic)#{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
    
    s='hello alex alex say hello sb sb'
    words=s.split()
    dic={}
    for word in words: #word="hello"
        dic.setdefault(word,words.count(word)) #{'hello':2,"alex":2,"say":1,}
    print(dic)#{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}

    集合

    一:基本使用:set

    1 用途:

    关系运算,去重

    2 定义方式:

    在{}内用逗号分开个的多个值

    集合的三大特性:

      1 每一个值都必须是不可变类型
      2 元素不能重复
      3 集合内元素无序

    s={1,3.1,'aa',(1,23),}# s=set({1,3.1,'aa',(1,23),})
    print(s,type(s))#打印出来的是无序
    
    s={1,1,1,1,1,1,1,1,1,2,3}
    print(s)
    
    s={'a','b','c'}
    s[0]#集合没有索引
    
    s=set('hello')
    print(s)
    print(set(['a','b','c',[1,2]]))#报错,集合是不可hash

    3 常用操作+内置的方法

    pythons={'李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy'}
    linuxs={'lxx','egon','张金蛋','张锡蛋','alex','陈独秀'}

    取及报名python课程又报名linux课程的学员:交集

    print(pythons & linuxs)#{'张锡蛋', 'alex', '张金蛋'}
    print(pythons.intersection(linuxs))#{'张锡蛋', 'alex', '张金蛋'}

    取所有报名老男孩课程的学员:并集

    print(pythons | linuxs)#{'陈独秀', 'oldboy', '赵铜蛋', 'egon', '张金蛋', 'alex', '张锡蛋', '李二丫', '李银弹', 'lxx'}
    print(pythons.union(linuxs))#{'陈独秀', 'oldboy', '赵铜蛋', 'egon', '张金蛋', 'alex', '张锡蛋', '李二丫', '李银弹', 'lxx'}

    取只报名python课程的学员: 差集

    print(pythons - linuxs)#{'李银弹', 'oldboy', '赵铜蛋', '李二丫'}
    print(pythons.difference(linuxs))#{'李银弹', 'oldboy', '赵铜蛋', '李二丫'}

    取只报名linux课程的学员: 差集

    print(linuxs - pythons)#{'lxx', '陈独秀', 'egon'}
    print(linuxs.difference(pythons))#{'lxx', '陈独秀', 'egon'}

    取没有同时报名两门课程的学员:对称差集/交叉补集

    print(pythons ^ linuxs)#{'赵铜蛋', '陈独秀', 'oldboy', 'lxx', '李银弹', '李二丫', 'egon'}
    print(pythons.symmetric_difference(linuxs))#{'赵铜蛋', '陈独秀', 'oldboy', 'lxx', '李银弹', '李二丫', 'egon'}

    是否相等

    s1={1,2,3}
    s2={3,1,2}
    print(s1 == s2)#True

    父集:一个集合是包含另外一个集合

    s1={1,2,3}
    s2={1,2}
    print(s1 >= s2)#True
    print(s1.issuperset(s2))#True
    
    s1={1,2,3}
    s2={1,2,4}
    print(s1 >= s2)#False

    子集

    s1={1,2,3}
    s2={1,2}
    print(s2 <= s1)#True
    print(s2.issubset(s1))#True

    需要掌握操作

    update

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

    pop

    s1={1,2,3}
    res=s1.pop()
    print(res)#无序删除,并返回值
    print(s1)

    remove

    s1={1,2,3}
    res=s1.remove(3) 单纯的删除,返回值为None
    print(s1)

    add

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

    difference_update

    s1={1,2,3}
    s2={1,2}
    s1.difference_update(s2) #在s1中删除与s2重复的,并把剩下的返回给s1
    print(s1)

    discard

    s1={1,2,3}
    res=s1.discard(3) #单纯的删除,返回值为None
    print(s1)
    print(res)
    s1.remove(444444) #删除的元素不存在则报错
    s1.discard(444444) #删除的元素不存在不会报错

    isdisjoint

    s1={1,2,3}
    s2={1}
    print(s1.isdisjoint(s2)) #如果两个集合有交集则返回False
    
    s1={1,2,3}
    s2={4,5,6}
    print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True

    二:该类型总结

    1 存多个值

    2 无序

    3 set可变

    s={1,2,3}
    print(id(s))#2286174155496
    s.add(4)
    print(id(s))#2286174155496

    集合去重
    局限性
    1、无法保证原数据类型的顺序
    2、当某一个数据中包含的多个值全部为不可变的类型时才能用集合去重

    names=['alex','egon','alex','alex','egon','lxx']
    s=set(names)
    print(s)
    l=list(s)
    print(l)
    
    stus_info=[
    {'name':'egon','age':18},
    {'name':'alex','age':73},
    {'name':'oldboy','age':84},
    {'name': 'egon', 'age': 18},
    {'name': 'egon', 'age': 18},
    {'name': 'egon', 'age': 18},
    {'name': 'oldboy', 'age': 84},
    
    ]
    # set(stus_info) #报错
    l=[]
    for info in stus_info:
        if info not in l:
            l.append(info)
    
    print(l)
    stus_info=l
    print(stus_info)
  • 相关阅读:
    IE6 PNG透明终极解决方案(打造W3CfunsIE6PNG最强帖)
    python处理异常(1) 分类: python 20130116 17:59 274人阅读 评论(0) 收藏
    输出列表中出现次数最多的元素 分类: python 20130115 15:25 990人阅读 评论(0) 收藏
    python性能优化摘录 分类: python 20130117 18:01 1192人阅读 评论(0) 收藏
    Pyscripter下载地址及UnicodeEncodeError: 'ascii' codec解决方法 分类: software 问题总结 20130116 15:41 3384人阅读 评论(0) 收藏
    python性能优化摘录(二) 分类: python 20130118 11:27 291人阅读 评论(0) 收藏
    python简明教程os模块 分类: python 20121227 11:54 200人阅读 评论(0) 收藏
    转换时间格式 及 列表综合 分类: python 20121226 17:54 182人阅读 评论(0) 收藏
    lambda()函数 分类: python 20121227 18:01 569人阅读 评论(0) 收藏
    file()创建文件方法 分类: python python基础学习 20121224 18:17 239人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/9367923.html
Copyright © 2011-2022 走看看