• 上海day6 ---- 列表、元组、字典和集合


    目  录

    一、列表收尾

    二、元组

    三、字典

    四、集合

    五、数据类型总结

    一、列表其他内置方法

    1、count():计算列表中元素的个数

    ss = [1,2,3,4,23,2,2,1]
    ss.count(2)
    3

    2、clear() : 清除容器内数据

    ss = [1,2,3,4,23,2,2,1]
    ss.clear()
    ss
    []
    

    3、reverse() 将列表反转

    ss = [1,2,3,4,23,55,66]
    ss.reverse()
    ss
    [66, 55, 23, 4, 3, 2, 1]

    4、sort() : 对列表内元素进行排序,默认是从小到大;

          若添加参数 sort( reverse = True) 就变成从大到小。

    ss = [23,34,12,24,76,53]
    ss.sort()  # 默认从小到大
    ss
    [12, 23, 24, 34, 53, 76]
    ss.sort(reverse=True)  # 从大到小
    ss
    [76, 53, 34, 24, 23, 12]

    类型总结:

    1、可存多值。

    2、有序,可被索引

    3、可变类型:列表是可变类型的原因及内部原理

    练习:用列表实现队列,用列表实现堆栈。

    #队列的特点是先进先出
    li = []
    li.append('egon')
    li.append('jason')
    li.append('sean')
    li.append('tank')
    
    print(li.pop(0))
    print(li.pop(0))
    print(li.pop(0))
    print(li.pop(0))
    队列实现
    #堆栈的特点是先进后出或后进先出
    li = []
    li.append('egon')
    li.append('jason')
    li.append('sean')
    li.append('tank')
    
    print(li.pop())
    print(li.pop())
    print(li.pop())
    print(li.pop())
    View Code

    二、元组

    基本用法:

    1、作用:可以存储多个元素,元素与元素之间可以用逗号隔开,元素可以是各个类型,但是元组不能被修改

    2、定义:与列表相似,只是把中括号[ ] 改成 小括号 ( )

    优先掌握的操作:

    1、按索引取值(正向取,反向取),只能取值不能改

    ss = (23,34,12,24,76,53)
    ss[0:4:2]
    [23, 12]

      注意:只能取不能改指的是,元组内部的元素不能改,但是当内部元素是可变类型容器时如列表、字典等,该元素可以修改

    tuple = ('a','b','c',['jason','egon','tank','sean'])
    tuple[3][0] = 'alex'  # 将元组中第4个元素列表中的值改变
    tuple
    ('a', 'b', 'c', ['alex', 'egon', 'tank', 'sean'])
    

      注意:元组和列表一样只能添加容器类型

    # t1 = tuple(1)  # 报错  必须传容器类型
    

    ***** 注意:在定义容器类型时,哪怕其中只有一个元素也要用逗号分隔开

    n1 = (1)  # 没有加逗号分开,默认识别为整型
    type(n1)
    <class 'int'>
    
    n2 = (1,)  # 加了逗号,识别为元组类型
    type(n2)
    <class 'tuple'>

    2、切片(顾头不顾尾,步长)  如 1中所示

    3、成员运算 in 和 not in

    tuple = ('a','b','c',['jason','egon','tank','sean'])
    'jason' in tuple
    False
    'a' in tuple
    True

    4、长度 len()

    tuple = ('a','b','c',['jason','egon','tank','sean'])
    len(tuple)
    4

    5、循环 

    类型总结:

    1、存多个值。

    2、有序。

    3、不可变类型。原因及原理结构如下图所示:

    三、字典

    基本用法:

    1、作用:可存储多对 key:value 键值对,key是对value的描述,所以key多是字符串类型

      强调:在字典中key值只能是不可变类型如int float str tuple ,value可以是任意类型

    # d1 = {1:'1',0:'0',1.11:'1.11',(1,2):'到底能不能呢?'}
    # print(d1[1.11])
    # print(type(d1))
    # print(d1[(1,2)])
    示例

    2、定义:大括号{ },里面存键值对,并用逗号分隔开

      注意:字典中的key值不能是重复的,只能唯一标识一条数据,如果存在多个重复的key,会被重复赋值,输出最后一个key

    d2 = {'name':'jason','name':'tank','name':'nick','password':123}
    d2['name']  # 多个‘name’,只输出最后一个name对应的键值‘nick’
    'nick'

    优先掌握的方法:

    1、按key存取值,可存可取!

    d2 = {'name':'nick','password':123}
    d2['name'] = 'tank'   # 直接根据key值重新赋值
    d2
    {'name': 'tank', 'password': 123}

    ******* 注意:赋值语句当key不存在的情况下,会自动添加一个新的键值对

    d2 = {'name':'nick','password':123}
    d2['age'] = 19
    d2
    {'name': 'nick', 'password': 123, 'age': 19}

    2、长度 len()

    3、成员运算 in 和 not in

    4、删除操作

      a、del (dict['key'])

      b、pop()  弹出的是value值;当key不在是会报错

    d2 = {'name':'nick','password':123}
    d2.pop('password')  # 弹出的是value值
    123
    
    d2.pop('age')  # 当key值不存在时,会报错!
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    KeyError: 'age'

    5、定义字典的三种方式:

       第一种:

     # d1 = {'name':'jason','password':123} 

       第二种:***** 

    d2 = dict(name = 'jason',age = 13,paw = 123)
    d2
    {'name': 'jason', 'age': 13, 'paw': 123}

      第三种:了解即可

    l = [
        ['name','jason'],
        ['age',18],
        ['hobby','read']
    ]
    # d = {}
    # # for i in l:  # ['name','jason'],['age',18]...
    # for k,v in l:  # ['name','jason'],['age',18]...
    #     # d[i[0]] = i[1]
    #     d[k] = v
    # print(d)
    # d3 = dict(l)
    # print(d3)
    View Code

    ******* 6、三种方法: 键keys() ,值values() ,键值对items()  -------- 引出Python2 和Python3 的区别

    # d1 = {'name':'jason','password':123}
    # print(d1.keys())  # dict_keys(['name', 'password'])  老母猪
    
    # print(d1.values())  # dict_values(['jason', 123])  老母猪  现在就把它当成一个列表来看即可
    
    # print(d1.items())  # dict_items([('name', 'jason'), ('password', 123)])
    # 就把它看成是列表套元组,元组的第一个元素是字典的key 第二个元素是字典的value

    ******* 7、重要的方法: get()  根据key值获取value

    d1 = {'name':'jason','pwd':123}
    print(d1['name'])
    print(d1['age'])
    print(d1.get('name','你给我的name在字典的key中'))
    res = d1.get('age')  # 当字典的key不存在的情况 不报错 返回None
    res1 = d1.get('xxx','你给我的age在字典的key中')  # 当字典的key不存在的情况 不报错 返回None
    # get可以传第二个参数。当你的key不存在的情况下,返回第二个你写好的参数信息

    其他4种用法:

    1、dict.fromkeys()  快速创建一个字典

    d2 = ['jason','tank','sean','egon']
    dict.fromkeys(d2,123)
    {'jason': 123, 'tank': 123, 'sean': 123, 'egon': 123}

    2、dict.popitem()  尾部以元组的形式弹出键值对

    d3 = {'jason': 123, 'tank': 123, 'sean': 123, 'egon': 123}
    d3.popitem()  # 尾部弹出
    ('egon', 123)

    3、dict.setdefault()  分两种情况,如下所示:

    d1 = {'name':'jason','pwd':123}
    res1 = d1.setdefault('name','xxoo')  # 当键存在的情况下 不修改值 并且将原先key对应值返回给你
    print(d1,res1)
    res2 = d1.setdefault('age',18)  # 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你
    print(d1,res2)
    
    >>>:
    {'name': 'jason', 'pwd': 123} jason
    {'name': 'jason', 'pwd': 123, 'age': 18} 18
    View Code

    4、dict.update()  添加键值对,并以dict.update(键值对)的形式进行更新,示例如下:

    d1 = {'name':'jason','pwd':123}
    d2 = {"age":18}
    d1.update(d2)
    # d1['age'] = 18
    # d1.update(age=666)
    print(d1)
    >>>:
    {'name': 'jason', 'pwd': 123, 'age': 18}

    注意:update()方法:当没有重复key的情况下就是添加键值对,但是当update()里面有重复key,会覆盖原有字典里面的key值

    5、循环

    类型总结:

    1、可存多个值

    2、无序

    3、可变类型

    四、集合

    定义:可以包含多个元素,并用逗号隔开

    # 定义:
    # s = {1,2,3,4,5,6}  # <class 'set'>  # s = set()
    # print(type(s))
    
    # s1 = set()
    # print(type(s1))  # 注意在定义空集合的只能用关键字set
    
    # x = {}  # <class 'dict'>  如果你仅仅只写了一个大括号 那么python默认将它当做字典类型

    作用:1、去重 2、关系运算

    集合的元素需要遵循的三个原则:

    1、每个元素必须是不可变类型。

      可变:不可hash

      不可变:可hash

    2、没有重复的元素

    # s = {1,2,2,2,2,2,2,2,2,2,3,4,4,4,4,4,5}
    # print(s)  # 自动将重复的元素 去除

    3、无序

    s = {1, 2, 3, 4, 5, 6}
    print(s[1])  # 报错!

      注意:集合的目的是将不同的值存放到一起,不同的集合做关系运算,无需纠结单个的值

    优先掌握的操作:

    1、长度 len()

    2、成员运算:in 和not in

    3、| 合集   &交集   — 差集     ^ 对称差集 

    pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}
    linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}
    # 既报名python也报名linux的学生姓名
    print(pythons & linux)  # 交集
    
    # 只报名python的学生姓名
    print(pythons - linux)
    
    # 只报名linux的学生姓名
    print(linux - pythons)
    
    # 没有同时报名两门课程的学生姓名
    print(pythons ^ linux)  # 对称差集
    
    # 取出所有报了名的学生姓名
    print(pythons | linux)

    4、父集 > ,>=     子集 <,<=  

    s = {1,2,3,4,5}
    s1 = {1,2}
    s>s1     #  判断s是不是s1的父集
    True

    5、add()  remove()  discard()

    ss = {1,2,3,4}
    ss.add(('a','b'))  # add()是添加“单个元素”,无论什么类型都当做一个元素
    ss
    {1, 2, 3, 4, ('a', 'b')}
    View Code

      remove 和 discard 的区别是:如果要删除的元素不在集合内,用remove会报错,用discard不会报错,会返回None

    ss = {2,3,4,('a','b','d')}
    ss.remove(2)
    ss
    {('a', 'b', 'd'), 3, 4}
    ss = {2,3,4,('a','b','d')}
    ss.discard(3)
    ss
    {('a', 'b', 'd'), 2, 4}
    View Code

     五、数据类型总结

    1、8种数据类型---- int 、float、str、list、dict、tuple、set、bool

    2、可变类型:list 、dict 、set

    3、不可变类型:int 、float、str、tuple、

  • 相关阅读:
    Spring AOP capabilities and goals
    java Design Patterns
    CDI Features
    connector for python实验
    spring ref &history&design philosophy
    LDAP & Implementation
    RESTful Levels & HATEOAS
    运维管理利器系列--ipmitool
    CentOS8.2同步阿里云Zabbix镜像到本地,本地搭建Zabbix仓库
    CentOS8.2同步阿里云Ceph镜像到本地,本地搭建ceph仓库
  • 原文地址:https://www.cnblogs.com/qinsungui921112/p/11134393.html
Copyright © 2020-2023  润新知