• 基础知识:元组、字典、集合


    摘要:

    1. 元组
    2. 字典
    3. 集合

    一 、元组tuple

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

    特点:

        1、用(),在()内分隔开来的多个任意类型的值。

        2、不可变类型

        3、有序

    表示:

    tu = ('a', 'b', 'c')
    print(tu, type(tu))
    # ('a', 'b', 'c') <class 'tuple'>
    t = (1,1.3,'xx',('a','b'),[1,2])
    t1= tuple('hello') #>>>>>>>
    ('h', 'e', 'l', 'l', 'o')

    常用操作和内置方法:

    优先掌握的:

    1、按索引取值,正向、反向取,只能取

    tu = ('a', 'b', 'c')
    print(tu[0])
    print(tu[2])
    print(tu[-1])
    # a
    # c
    # c
    tuu = ('a', 'b', 'c', ['x', 'y'])
    print(tuu[3][0],id(tuu),id(tuu[3]))
    tuu[3][0]='z'
    print(tuu[3][0])
    print(tuu[3][0],id(tuu),id(tuu[3]))
    
    '''
    x 2336563819768 2336563836616
    z
    z 2336563819768 2336563836616
    '''

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

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

    3、长度

    4、成员运算in 和not in

    5、循环

    for item in (‘a’,'b','c'print(item)
    >>>>>>
    a
    b
    c

    6、需要掌握的操作:

    t=('a','b','c','a')
    print(t.count('a'))         #2
    print(t.index('a',1,10))    #3
    print(t.index('xxx',1,10))    #ValueError

    该类型总结:

    有序,存多个值,不可变。

    二、字典,字典类型是Python中仅存的mapping类型。

    2.1声明:字典dict的

     key:所有不可变类型,int float tuple str bool None, 一般就采用字符串

    value:任意类型

    key具有唯一性(重复的话会覆盖旧值),value可以重复。

    字典的定义:

    d1 = {'name': 'Owen', 'age': 18}
    print(d1)
    # 2
    d2 = dict({'name': 'Owen', 'age': 18})
    print(d2)
    # 3
    d3 = dict(name='Egon', age=58)
    print(d3)
    # 1
    d1 = {'name': 'Owen', 'age': 18}      # {'name': 'Egon', 'age': 58}
    print(d1)
    # 2
    d2 = dict({'name': 'Owen', 'age': 18})      # {'name': 'Egon', 'age': 58}
    print(d2)
    # 3
    d3 = dict(name='Egon', age=58)         # {'name': 'Egon', 'age': 58}
    print(d3)

    2.2字典的用法

    首先:字典为无序储存,所以无索引于切片,用key来取值。

    2.3增删改查

    增
    dic ={}
    不存在的时候:
    dic['name']='mac'
    print(dic)>>>>>>>{'name':'mac'}
    
    改
    key存在的时候
    dic ={'name':'mac'}
    dic['name']='MAC'   #此时key是name,在原dic字典中存在,这时就不用增了,直接改key对应的value就行了。所以print(dic)为{'name': 'MAC'}
    
    查:就是对应key查value值
    dic ={'name':'mac'}
    print(dic['name'])>>>>>>mac
    
    删:
    del dic['name']
    print(dic)>>>>>>>{}

    2.4、

    ①get取值 *****
    
    
    print(dic['c'])  # KeyError
    res = dic.get('c')  # 拥有默认值,None,可以避免错误
    print(res)
    res = dic.get('d', 'key不存在')  # 可以自定义默认值
    print(res)
    ②.pop()
    dic = {'a': 10, 'b': 20}
    res=dic.pop('b') # 根据key删除指定对象,并返回删除的对象的value
    print(res)

    还有个随机删除:随机删除,.popitem()    返回值是(key, value)

    dic = {'a': 10, 'b': 20}
    res= dic.popitem()
    print(dic)
    print(res)
    ③.update  添加的参数字典,与dic可以重复,就是更新值,新key就是新增
    dic = {'a': 10, 'b': 20}
    dic.update({'a': 100, 'c': 300})
    print(dic)
    
    
    结果{'a': 100, 'b': 20, 'c': 300}
    ④复制:(浅拷贝|深拷贝)
    newDic = dic.copy()
    print(newDic)
    
    d1 = {'list': [1, 2]}
    d2 = d1.copy()
    print(id(d1), id(d1['list']))
    print(id(d2), id(d2['list']))
    d1['list'].append('abc')
    print(d2)
    # 浅copy:只做第一层copy,内部的成员地址还是原来的地址
    ⑤ 如何定义一个空字典
    # 第一个参数:keys:list|tuple|str,第二个参数:统一的默认value
    d10 = {}.fromkeys(['a', 'b', 'c'], '')
    print(d10)  # {'a': '', 'b': '', 'c': ''}

    2.5字典的循环

    dic = {'a': 10, 'b': 20, 'c': 30}
    # 直接for循环(遍历)字典得到的是key
    for k in dic:
        print(k, dic[k])
    
    # 能不能只循环值
    values = dic.values()
    print(values, type(values))
    # 存放key的集合
    keys = dic.keys()
    print(keys, type(keys))
    # 存放key-value的键值对关系
    k_vs = dic.items()
    print(k_vs, type(k_vs))
    
    # dic.values() | dic.keys() | dic.items() 不是原生list,不能直接索引取值,但可以for循环取值
    # vs = list(values)
    # print(vs[1])
    # for v in vs:
    #     print(v)
    
    for v in values:
        print(v)
    print()
    for k in keys:  # 跟直接遍历字典是一样的
        print(k)
    
    print()
    # ***** 同时遍历k-v
    for k, v in dic.items():
        print(k, v)

    三、集合

    1.定义

    s1 = set()
    s2 = set({1, 2, 3})

    2.重点:数据具有唯一性

    # i) 单列数据集合:str,list,tuple,set 双列:dict
    # ii) 无序存储:无key无index,无法取值
    # iii) 可变数据类型,内部可以存放任意类型数据,但数据具有唯一性

    3.运算

    m = {'a', 'b', 'c', 'egon'}
    n = {'x', 'y', 'z', 'egon'}

    # 交集 &(咱俩都有的)

    res =m & n                       #  {'egon'}
    res =m.intersection(n)           #  {'egon'}

    # 并集(你的+我的)

    res = m | n                      #  {'z', 'c', 'y', 'x', 'b', 'a', 'egon'}
    res = m.union(n)                 #  {'z', 'c', 'y', 'x', 'b', 'a', 'egon'}

    # 差集(a-b:a有而b没有)

    res = m - n                      #  {'a', 'b', 'c'}
    res = m.difference(n)            #  {'a', 'b', 'c'}

    # 对称差集(你和我交集以外的)

    res = m ^ n                              # {'z', 'x', 'a', 'b', 'c', 'y'}
    res =m.symmetric_difference(n)           # {'c', 'z', 'y', 'a', 'x', 'b'}  

    4、内置方法:

    增:
    add:增一个:
    s={'a','b',18}
    s.add('c')
    print(s)
    # {18, 'c', 'b', 'a'}
    
    update:增多个
    s={'a','b',18}
    s.update({'f','e'})
    s.update('f','e')
    print(s)
    # {'f', 18, 'b', 'a', 'e'}
    删:
    remove:删除指定元素,无返回值,返回值为None,如果删除元素不存在,会报错(discord不会报错)
    s={'a','b',18}
    s.remove(18)
    print(s)
    # {'a', 'b'}
    
    
    
    pop:随机删除一个元素,有返回值,返回值为删除的那个元素
    s={'a','b',18}
    res=s.pop()
    print(res)
    print(s)
    # 
    a
    {18, 'b'}
    改:上面的集合运算方法 m.intersection(n)  m.union(n) m.difference(n) m.symmetric_difference(n)  
    查:查看2个几个之间的关系
    a={'a','b',18}
    b={'d','c',30}
    c={'b'}
    d={'a','b',18,'c'}
    res1=a.isdisjoint(b)   # 判断a与b是否'不相交'
    res2=a.issubset(d)     # 判断a是否是d的子集
    res3=a.issuperset(c)   # 判断a是否是c的父集
    print(res1)            # True
    print(res2)            # True
    print(res3)            # True
  • 相关阅读:
    Emacs和ESS的使用技巧。
    响应式
    Day learn,day up
    Docker快速安装kafka | 沈健的技术博客
    闭包函数如何使用循环变量
    leetcode笔记——35.搜索插入位置
    CSS 之动态变换背景颜色
    吴裕雄 PYTHON 神经网络——TENSORFLOW 双隐藏层自编码器设计处理MNIST手写数字数据集并使用TENSORBORD描绘神经网络数据2
    吴裕雄 PYTHON 神经网络——TENSORFLOW 双隐藏层自编码器设计处理MNIST手写数字数据集并使用TENSORBORD描绘神经网络数据
    吴裕雄 PYTHON 神经网络——TENSORFLOW 单隐藏层自编码器设计处理MNIST手写数字数据集并使用TensorBord描绘神经网络数据
  • 原文地址:https://www.cnblogs.com/suguangti/p/10595735.html
Copyright © 2020-2023  润新知