阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

常见数据结构-list列表

98次阅读
没有评论

共计 2468 个字符,预计需要花费 7 分钟才能阅读完成。

一、什么情况下使用列表?

  • 思考

    存储 5 个人的年龄,求他们的平均值

    age1 = 18 age2 = 19 age3 = 20 age4 = 21 age5 = 22
  • 思考

    存储 100 个人的年龄

  • 解决

    使用列表

二、基本使用

  • 本质

    是一个有序集合

  • 创建列表

    ''' 创建列表 格式:列表名 = [元素 1, 元素 2, ……, 元素 n] ''' # 创建空列表 li1 = [] print(li1, type(li1)) # 创建带有元素的列表 # 注意:列表中元素的类型可以不同,但是在今后的开发中一般不存在这种状况 li2 = [1, 2, 3, 4, 5, "good", True] print(li2)
  • 列表元素的访问

    # 列表元素的访问 li3 = [1,2,3,4,5] # 往列表末尾添加元素 li3.append(6) # 获取元素 列表名 [下标] print(li3[2]) # print(li3[9]) #下标超出范围,溢出 # print(li3[-1]) # 下标可以是负数,- 1 表示最后一个元素的下标,- 2 表示倒数第二个,依次类推 # 修改元素 列表名 [下标] = 值 li3[2] = 33 # li3[6] = 10 #下标不存在 print(li3) # 截取列表 print(li3[1:3]) print(li3[1:]) print(li3[:3])
  • 列表操作

    # 列表相加(列表组合) li4 = [1,2,3] li5 = [4,5,6] li6 = li4 +li5 print(li6)
    # 列表相乘(列表重复) li7 = [7,8,9] li8 = li7 * 3 print(li7) print(li8)
    # 成员判断 li9 = [1,2,3] print(1 in li9) print(4 in li9)

三、二维列表

概念:列表中的元素是一位列表的列表

本质:一维列表

li1 = [[1,2,3], [4,5,6], [7,8,9]] print(li1[1][1])

四、内置功能

  • append(obj)

    在列表的末尾添加一个新的元素

    li1 = [1,2,3,4,5] li1.append(6) li1.append([7,8,9]) print(li1)
  • extend(seq)

    在列表的末尾一次追加多个元素

    li2 = [1,2,3,4,5] li2.extend([6,7,8]) print(li2)
  • insert(index, obj)

    将元素 obj 按下标插入列表,不会覆盖原数据,原数据会按顺序后移

    li3 = [1,2,3,4,5] li3.insert(2, 100) print(li3)
  • pop(index=-1)

    移除列表中指定下标出的元素,默认移除最后一个,返回被删掉的数据

    li4 = [1,2,3,4,5] data = li4.pop() print(data, li4)
  • remove(obj)

    移除列表中第一次出现的 obj 元素

    li5 = [1,2,3,4,5,2,4,2,5,6,7] li5.remove(2) print(li5)
  • clear()

    清空列表

    li6 = [1,2,3,4,5] li6.clear() print(li6)
  • count(obj)

    返回元素 obj 在列表中出现的次数

    li7 = [1,2,3,4,5,2,4,2,5,6,7] print(li7.count(2))
  • len(seq)

    返回列表中元素的个数

    li8 = [1,2,3,4,5] print(len(li8))
  • index(obj)

    在列表中获取元素第一次出现的下标,没有则会抛出 ValueError 异常

    li9 = [1,2,3,4,5,2,4,2,5,6,7]
    print(li9.index(2))
    
  • max(seq)

    返回列表中最大的元素

    print(max([2,3,4,1,4,6,7,3]))
    
  • min(seq)

    返回列表中最小的元素

  • reverse()

    列表倒序

    li10 = [1,2,3,4,5] li10.reverse() print(li10)
  • sort()

    根据 func 函数给定的规则进行列表元素的排序,默认升序

    li11 = [2,1,3,5,4] li11.sort() print(li11)
  • list(seq)

    将其他类型的集合转为列表类型

    str1 = "baism"
    li12 = list(str1)
    print(li12, type(li12))
    

五、内存问题

  • 赋值

    • == 与 is

      num1 = 1 num2 = 1 print(id(num1), id(num2)) print(num1 == num2) print(num1 is num2) num3 = 401 num4 = 401 print(id(num3), id(num4)) print(num3 == num4) print(num3 is num4)
    • 赋值

      a = [1,2,3,4,5] b = a print(id(a), id(b)) print(a == b) print(a is b)
      c = [1,2,3,4,5,[7,100,9]]
      d = c
      print(c == d)
      print(c is d)
      c[5][0] = 60
      print(c)
      print(d)
      

常见数据结构 -list 列表

  • 浅拷贝

    只拷贝表层元素

    from copy import copy a = [1,2,3,4,5] b = copy(a) print(id(a), id(b)) print(a == b) print(a is b) c = [1,2,3,[4,5,6]] d = copy(c) print(id(c), id(d)) print(c == d) print(c is d) print(id(c[3]), id(d[3])) print(c[3] == d[3]) print(c[3] is d[3])

常见数据结构 -list 列表
常见数据结构 -list 列表

  • 深拷贝

    注意:不论深拷贝还是浅拷贝都会在内存中生成一片新的内容空间 (把拷贝的内容在内存中重新创建一份)

    两者有区别的前提:元素中有另外的列表

    说明:深拷贝在内存中重新创建所有子元素

    from copy import deepcopy a = [1,2,3,4,5] b = deepcopy(a) print(id(a), id(b)) print(a == b) print(a is b) c = [1,2,3,4,5,[6,7,8]] d = deepcopy(c) print(id(c), id(d)) print(c == d) print(c is d) print(id(c[5]), id(d[5])) print(c[5] == d[5]) print(c[5] is d[5])

常见数据结构 -list 列表
常见数据结构 -list 列表

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-05-26发表,共计2468字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中