美文网首页
Python入门之路-常用语法2 列表、元组

Python入门之路-常用语法2 列表、元组

作者: percivals | 来源:发表于2022-12-16 16:07 被阅读0次

    列表

    1.列表

    格式为[a,b,c,d],可以存放不同类型的数据
    访问指定元素以arr[index]格式, 如果想要访问最后一位元素,可以通过

    list1[len(list1)-1]
    

    也可以通过

    list1[-1]
    

    同理倒数第二个是list1[-2]

    2.列表切片

    通过list[startIndex:endIndex]语法,可以获取指定范围的列表切片,不包括结束点位:

    list1[1:3]
    

    如果从起始点位开始或者结束点位结束,可以省略对应的下标:

    list1[:3]
    
    list1[3:]
    
    list1[:]
    

    注意,冒号不能省略

    此外,还可以设置列表跨度步进值:

    list1[1:6:2]
    

    代表从第一个元素开始,获取下一个元素的跨度为2,到第六个元素结束,即1,3,5

    由此,可以使用list1[::-1]来获取数组的倒序

    3.列表新增元素
    • 使用append函数,添加单个元素到末尾

      list1.append("第六个元素")
      
    • 使用extend函数,添加多个元素到末尾
      extend函数可以添加一个可迭代对象

      list1.extend([7,8])
      

      以上写法也可以用切片来完成

      list1[len(list1):] = [7,8]
      

      与上面的extend写法是等价的关系

    • 使用insert函数,插入单个元素到指定下标位置

    list1.insert(1,"插入的元素内容")
    

    4.列表删除元素

    • remove函数
      可以移除指定元素
      如果包含多个相同的元素,只会删除第一个
      如果列表中并不存在该元素,会报错
    list1.removeat("需要删除的元素内容")
    
    • pop函数
      可以移除指定下标位置的元素,并返回该元素
    i = list1.pop(2)
    
    • clear函数,用于清空列表
    list1.clear()
    

    5.列表修改元素

    • 通过指定下标可以修改元素
      注意,不可以越界,超出数组本身长度会报错
    list1[0] = "修改之后的元素"
    
    • 通过切片方式也可以完成元素的替换,并且可以替换多个元素
    list1[1:] = ["元素2","元素3"]
    

    替换元素的长度与切片长度可以不相等,列表长度会随之发生改变

    6.列表查找元素

    • count函数,用于查找元素在列表中出现的次数
    list1.count("指定元素内容")
    
    • index函数,查找某个元素在列表中的索引值
      如果有多个相同的元素,只会返回第一个的下标值
    list1.index("查找的元素内容")
    

    index函数有两个额外的参数值,index(x, start, end), 可以传入查找的起始位置

    list1.index("查找的元素内容",10,20)
    

    7.列表复制

    • copy
      使用copy函数可以复制一份相同的列表
    list2 = list1.copy()
    

    使用copy时,会对列表进行浅拷贝,列表具有不同的地址,列表内的元素仍然是地址拷贝

    list1 = [1,2,3]
    list2 = list1.copy()
    list2[0] = 3
    list1  // [1, 2, 3]
    list2  // [3, 2, 3]
    

    当对copy出来的列表list2进行修改赋值,list1保持原来的值
    但是如果对list2列表内的元素进行修改赋值,list1内的元素也对应修改

    list1 = [[0,1,2],[1,2,3],[2,3,4]]
    list2 = list1.copy()
    list2[0][0] = 3
    list2  // [[3, 1, 2], [1, 2, 3], [2, 3, 4]]
    list1  // [[3, 1, 2], [1, 2, 3], [2, 3, 4]]
    

    因为copy浅拷贝是对列表外层对象进行拷贝,如果包含嵌套对象,只会拷贝其引用

    使用深拷贝可以解决这个问题
    深拷贝,需要先引入copy模块

    import copy
    copy.copy(list1)  // 浅拷贝
    copy.deepcopy(list1)  // 深拷贝
    

    深拷贝会对对象及对象内的子元素进行拷贝

    • 使用切片进行实现
    list3 = list2[:]
    

    效果与上述的一致

    8.列表拼接

    可以使用+、*等运算符对列表进行拼接

    list1 = [1,2,3]
    list2 = [4,5,6]
    list3 = list1+list2  // [1,2,3,4,5,6]
    list4 = list1 * 3 // [1,2,3,1,2,3,1,2,3]
    

    通过*进行的拷贝是地址拷贝,此时修改一个列表,另外的列表也会发生修改

    9.列表推导式

    使用语法糖对列表进行处理以生成一个新的列表,效率较高

    格式:[表达式 +  for循环语句]
    
    如:[i * 2 for i in list1]
    
    list1 = [i * 2 for i in range(3)] // [0, 2, 4]
    

    列表推导式后面可以添加一个筛选句

    格式:[表达式 +  for循环语句 + 筛选语句]
    
    如:
    [ i * 2 for i in range(3) if i < 2]  // [0, 2]
    

    列表推导式中,循环语句使用嵌套写法

    格式: [表达式 + for循环语句1 + for 循环语句2 + ... + for循环语句n]
    如:
    list1 = [[0,1,2],[1,2,3],[2,3,4]]
    [i for firstRow in list1 for i in firstRow] // [0, 1, 2, 1, 2, 3, 2, 3, 4]
    

    同理,每个for语句后面都可以添加一个筛选语句

    格式: [表达式 + for循环语句1  + 筛选语句1 + for 循环语句2 + 筛选语句2 + ... + for循环语句n + 筛选语句n]
    

    10.其他函数

    • 排序 sort函数、reverse函数
      通过sort函数可以实现列表的排序,reverse函数实现倒序

    元组

    格式为 (a, b, c, d, e), 其中()可以去掉,即a, b, c, d, e。像列表一样可以容纳多个不同类型的对象,

    元组数据是不可变的(但是如果元组内存放的是可变类型,比如列表,该数据是可以修改的)

    • 取值
      可以通过下标进行取值, 但是元组数据不可变,无法通过下标来修改值
    tuple1 = (1,2,3,4,5)
    tuple1[0] // 1
    

    也可以像列表一样通过切片来取值

    tuple1[1:3]  // (2, 3)
    

    还可以通过赋值方式来进行取值

    tuple1 = (1,2,3)
    (x, y, z) = tuple1
    x // 1
    y // 2
    z // 3
    

    注意这种方式需要赋值的数量跟对应元组的长度一致

    • count函数、index函数、+、*
      同列表的用法一致

    • 嵌套
      元组内可以嵌套元组

    (tuple1,tuple1) // ((1, 2, 3, 4, 5), (1, 2, 3, 4, 5))
    
    • 列表推导式
      元组也支持列表推导式语法
    [i + 1 for i in tuple1] // [2,3,4,5,6]
    

    会生成一个列表

    相关文章

      网友评论

          本文标题:Python入门之路-常用语法2 列表、元组

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