美文网首页
4章 列表与元组

4章 列表与元组

作者: 码上版码 | 来源:发表于2020-09-08 21:26 被阅读0次

    本章大纲

    列表

    元组

    使用场景区别

    列表

    列表和元祖都是序列类型,也就意味着元组和列表有下标

    字符串是一种Sequence(序列)类型----有下标

    ​ 由一个个元素组成

    ​ 每个元素是一个字符

    元素 H i J a y
    正下标 0 1 2 3 4 5
    负下标 -6 -5 -4 -3 -2 -1

    列表也是一种Sequence(序列)类型

    ​ 可以存储任何类型的数据,每个元素是任意类型

    元素 1 1.333 a abc
    正下标 0 1 2 3
    负下标 -4 -3 -2 -1
    print('---lesson4_列表+元组---')
    # 1- 列表--下标 + 切片
    # 可以存储任何类型的数据
    alist = [10, 'hello', 3.14, [100, 200]]  # 这就是列表
    print(type(alist))
    # 取值:一个值用下标;多个值用切片
    # 列表中的逗号一般是元素与参数的分割,分号一般是句与句的分割--sql,java,c++,c语言都是分号分割语句
    # 如果最外层列表中有3个分号,那么就有4个元素,也就是下标长度是4
    print(len(alist))
    print(alist[0])  # 取列表中的第一个元素
    print(alist[3][0])  # 取列表中的最后一个元素中的元素100
    print(10 in alist)  # 查看10是否在alist列表中,True在
    print(100 in alist)  # 查看100是否在alist列表中,False不在
    
    # 2- 修改值
    uplist = [10, 'hello', 3.14, [100, 200]]
    alist[0] = 20  # 将列表中下标为0的元素修改为20
    print(uplist)
    alist[-1][0] = 150  # 将子列表中的元素100修改为150
    print(uplist)
    alist[-1][1] = 'world'  # 将子列表中的元素100修改为150
    print(uplist)
    
    # 3- 增加元素
    list = [10, 20, 30, 40]
    list.append(50)  # 列表中的最后一个元素后面增加元素
    # insert(第一个元素:需要插入位置下标, 第二个元素需要插入的值)
    # insert 插入的位置下标大于 >len,相当于append--尾部增加;小于 >len,在第一个元素后面插入
    list.insert(20, 25)  # 大于 >len,相当于append--尾部增加
    list.insert(2, 23)   # 小于 >len,在第一个元素后面插入
    # 插入列表
    list.insert(10, [20, 'hello', 'my name is tom'])
    list.insert(1, [20, 'world', '小明'])
    print(list)
    
    # 4- 删除
    # 4-1 del 
    dellist = [10, 20, 22, 3, 44,33]
    del dellist[1]  # 删除下标为1的值(元素)
    # 删除多个元素,第一次删除后重新排序,在执行第二个删除
    del dellist[1], dellist[2]
    del dellist[1:1+2]  # 切片取值,第一刀元素下标+获取的元素个数=第二刀获取的元素
    del dellist[::2]  # 步长获取元素,步长=2,隔一个个取一个
    print(dellist)
    
    # 4-2 pop 有返回值--会返回被删除的对象
    poplist = [10, 20, 22, 3, 44,33]
    poplist.pop(2)  # 将下标为2的对象删除
    res = poplist.pop(3)  # 将被删除对象赋值给一个变量res
    print(res)
    print(poplist)
    
    # 4-3 remove -- 根据值来删除 -- 首先判断值是否存在 -- 效率最慢
    relist = [1, 2, 'hello', [199, 200], 200, 31]
    relist.remove(2)  # 删除的值一定要存在,否则报错
    print(relist)
    # 如果列表中有多个相同的对象,只能删除第一个对象
    relist1 = [0, 1, 1, 2, 'hello', [199, 200], 200, 31]
    relist1.remove(1)
    print(relist1)
    
    """
    元素存在:
        一直删
    """
    relist2 = [0, 1, 1, 2, 'hello', [199, 200], 200, 31, 1]
    # 第一种写法
    while 1 in relist2:
        relist2.remove(1)
    print(relist2)
    # 第二种写法:
    # 删除3次后退出循环
    cnt = 0  # 默认0
    while 1 in relist2:
        cnt += 1  # 每循环一次,cnt在原来基础上加1
        relist2.remove(1)
        if cnt >= 3: # 当cnt次数大于等于3退出循环
            break
    print(relist2)
    
    # 5- 合并列表
    list1 = [1, 2, 3, 12, 13]
    # 5-1 临时合并--另存新地址--新对象,不改变原列表
    print(list1+[40, 50], '----id:', id(list1))  # id()--地址
    # 5-2 同一个地址--扩展列表
    list1.extend([33, 44])  # 改变原列表
    print(list1 ,'----id:', id(list1))
    
    """
    总结:
        1- 列表是--可变对象
        2- 任意类型--存储
    """
    
    

    元组

    列表和元祖都是序列类型,也就意味着元组和列表有下标

    元组也是一种Sequence(序列)类型

    ​ 可以存储任何类型的数据,每个元素是任意类型

    元素 1 1.333 a abc
    正下标 0 1 2 3
    负下标 -4 -3 -2 -1

    元组和 list 非常相似 ,只有一个最大的不同:

    元组不能改变其组成元素(immutable)

    # 元组--只读,不可改变:元素个数,元素的值
    # 元组是一个元素,元素后面必须有逗号,比如:(xxx,)
    tu1 = ()  # 这就是元组
    print(type(tu1))
    

    使用场景区别

    '''
    使用场景:
        1- 列表:存储数据--可以修改的、排序
        2- 元组:一些项目的系统配置数据--不能修改
            systemConfigData = ('xxx= false',)
    '''
    
    """
    案例场景:
    需求:
        1- 保存全班学生信息
        2- 可以修改每一个学生信息
        3- 可以增加/删除-学生信息 
    stuInfo = (
    (学生1学号, 姓名, 地址, 电话),
    (学生2学号, 姓名, 地址, 电话),
    (学生3学号, 姓名, 地址, 电话)
    )
    stuInfo中的信息是元组,所以不能修改,将其改成列表就可修改:
    stuInfo = [
    [学生1学号, 姓名, 地址, 电话[,
    [学生2学号, 姓名, 地址, 电话],
    [学生3学号, 姓名, 地址, 电话]]
    """
    info = ([100, 200],)
    print('---id:', id(info))
    info[0][0] = 30  # 元组中的子列表对象是可以修改的,因为对象本身是列表中的对象,而非元组中的对象
    print('----id:', id(info))
    
    
    扩展知识 python中文翻译网站:https://learnku.com/python/docs
    列表-转-元组:tuple(list) 元组-转-列表:list(tu1) 转换出来的是一个新的对象 对转换前的对象不会产生影响

    相关文章

      网友评论

          本文标题:4章 列表与元组

          本文链接:https://www.haomeiwen.com/subject/obqcektx.html