• 列表和元组


    1.列表   list
    列表:能装对象的对象
    在python中使用  []  来描述列表,内部元素使用逗号隔开,对数据类型没有要求
    lst = ["光头强", 1, True, {}, (1, ), {123}, ["周杰伦",[], "周杰", "结论"]]
    print(lst)
    结果:['光头强', 1, True, {}, (1,), {123}, ['周杰伦', [], '周杰', '结论']]
    列表存在索引和切片,和字符串是一样的
    lst = ["天龙八部", "西游记", "红楼梦", "银平煤", "绿平煤"]
    print(lst[3])
    print(lst[-3])
    print(lst)
    print(lst[1:4]) # 切片,原来是什么类型. 得到的就是什么类型
    print(lst[-1::-2]) # 倒着切
    原来是什么类型,得到的就是什么类型
    2.相关的增删改查操作(重点)
    新增,添加:
     a.append()  追加,在后面添加
    lst = ["凡人修仙传", "诛仙", "神墓"]          # 添加 append() 追加. 在后面添加
    lst.append("看见")
    lst.append("追风筝的人")
    结果:['凡人修仙传', '诛仙', '神墓', '看见', '追风筝的人']
     b. insrt(位置,元素)  插入,  插入指定元素到自定位置,效率相对比较低
    lst = ["凡人修仙传", "诛仙", "神墓"]
    lst.insert(1, "琴帝")
    print(lst)
    # # 插入 insert(位置, 元素), 效率相对比较低
     c. extend() 迭代添加,把传递进去的参数进行迭代,把每一下项添加到列表的末尾
    删除:
      a.pop()  默认从后往前删.    pop(索引)按照索引位置删除
             0           1       2        3                 4
    lst = ["斗破苍求", "手机", "爵迹", "满城尽带黄金甲", "三生三世十里桃花"]
    lst.pop()
    结果:['斗破苍求', '手机', '爵迹', '满城尽带黄金甲']
    lst.pop(1)
    结果:['斗破苍求', '爵迹', '满城尽带黄金甲']
      b. remove(元素)  移除  但元素不存在会报错
    lst = ["斗破苍求", "手机", "爵迹", "满城尽带黄金甲", "三生三世十里桃花"]
    lst.remove("满城尽带黄金甲") # 当元素不存在的时候会报错
    结果:['斗破苍求', '手机', '爵迹', '三生三世十里桃花']
       del lst[3:]   用切片或者索引删除
       clear()  清空
    修改:
        通过索引修改,   index out of ragne: 索引下标越界
    lst[索引] = 元素
    lst = ["苏秦", "武大", "武二", "宝元", "李诞", "池子", "王建国"]
    lst[3] = "松江" # 通过索引修改  index out of range 索引下标越界
    print(lst)
    结果:['苏秦', '武大', '武二', '松江', '李诞', '池子', '王建国']
    lst[1:3] = ["麻花藤"] # 迭代更新(不常用)
    print(lst)
    结果:['苏秦', '麻花藤', '宝元', '李诞', '池子', '王建国']
    lst[1:5:2] = ["麻花藤", "码云"]  # 坑: 如果步长不是1. 元素的个数必须要和切片的个数一致
    print(lst)
    结果:['苏秦', '麻花藤', '宝元', '码云', '池子', '王建国']
    lst = ["alex", "wusir", "胡辣汤"]
    把列表中的wusir替换成大写 WUSIR
    首先你要获取到2元素
    变成大写
    塞回去(必须要放回去)
    lst[1] = lst[1].replace("wusir", "WUSIR")
    print(lst)
    查询:   for循环   列表是一个可迭代对象
    lst = ["jay", "wlh", "lzw", "wf"]
    for item in lst: # item是lst中的每一项
        print(item)
    结果:jay
    wlh
    lzw
    wf
    3.列表的嵌套
    多个列表的嵌套
    lst = [["张艺谋", "冯小刚", "陈凯歌"], ["李安", "王家卫", "王晶"], ["周杰伦",["abc", "alex_wusir", ["胡辣汤", "c"]], "风扇哥"]]
    print(lst[1][1][2])
    结果:卫
     
    #把王晶换成"贾樟柯"
     
    lst[1][2] = "贾樟柯"
    print(lst)
    $$$$$$$
    降维操作 ["哈哈", "hehe", "houhou"] 一维  [[1,2,3], [12,4,5], [6,7,8]] 二维
    数数
    lst[2][1][1] = lst[2][1][1].replace("_", "$")
    print(lst)
    4.列表的相关操作
       a.count()   计数
    lst = ["太白", "太白", "太黑", "日天", "女神", "alex", "太白"]
    print(lst.count("太白")) # 查看xxx元素出现的次数
       sort(reverse = True)  排序,默认升序       
    lst = [1, 8,12,22,1,1,2,33,4,5]
    # lst.sort() # 排序. 默认升序
    lst.sort(reverse=True) # reverse 反向, 降序
    print(lst)
       reverse    反向降序
    lst = ["赤木", "樱木花道", "流川枫", "三井"]
    lst.reverse() # 把列表翻转
    print(lst)
    # lst= [1,2,3,4,5,"胡辣汤"]
    # print(len(lst)) # 查看列表中元素的个数
     
    # list # 按住ctrl +鼠标左键
    5.什么是元组   tuple()   只读列表
    能装对象的对象.不可变,一旦确认,不可更改
    tu = ("DNF", "LOL", "王者荣耀", "QQ飞车", "炫舞", {}, tuple(), [])
    print(tu)
    tu[1] = "呵呵" # 'tuple' object does not support item assignment
    print(tu)
    元组也有索引和切片
    print(tu[3:5])
    print(tu[3:7:2])
    元组有坑:    空元组的固定写法:tu = tuple()
    元组中如果有一个元素
    tu = (1) # 不是元组   <class 'int'>
    tu = (1, ) # 这个是元组 <class 'tuple'>
    print(type(tu))
    好习惯:写元组的时候末尾加个逗号
    tu = ("锅包肉", "酸菜炖粉条+五花肉", "红烧鲤鱼", "红烧肉")
    # 元组也是可迭代的
    for item in tu: # 可以使用for循环
        print(item)
    结果:锅包肉
    酸菜炖粉条+五花肉
    红烧鲤鱼
    红烧肉
    6.元组的嵌套
    tu = (1, "哈哈", "胡辣汤", ["忍者", "神龟"])
    # tu[1] = "呵呵" # 元组不可变
    tu[3] = ["我是新列表"] # 改变了指向. 报错
    tu[3].append("孙悟空") # 元组没改. 该的是元素内部 没有改变元组的指向. 不报错
    print(tu)
    7.range(参数)     可以被迭代     重点,难点
    range(n)   [0, n)    前闭后开
    range(参数)  [0,参数)
    for i in range(20): #  range()可以被迭代 0-9
        print(i)
    range(m , n)   [m , n)    
    range(参数1, 参数2)  [参数1, 参数2) 切片
    for i in range(10, 20):
        print(i)
    range(m , n, p )   [m , n , p)    每隔p取一个
    # range(参数1, 参数2, 参数3)  [参数1, 参数2) 每隔参数3个位置取一个
    for i in range(10, 20, 3):
        print(i)
    重点
    # 重点
            for i in range(len(lst)):
                i 索引
                lst[i] 元素
    lst = ["周杰伦", "动画城", "大风车", "随便加", "宝宝", "孟孟", "萌萌", "孟萌"]
     
    for item in lst: # 只能拿到元素. 获取不到索引
        print(item)
  • 相关阅读:
    Exception handling 异常处理的本质
    一个人运气不好怎么办?做什么事能够马上改变运气?
    autoreleasing on a thread
    Tagged Pointer
    Objective-C 引用计数原理
    oc引用计数原理-引用计数相关变化
    黑箱中的 retain 和 release
    黑幕背后的Autorelease
    自动释放池的前世今生 ---- 深入解析 autoreleasepool
    Exceptions and Errors on iOS
  • 原文地址:https://www.cnblogs.com/yanghongtao/p/10040434.html
Copyright © 2020-2023  润新知