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

常见数据结构-list列表

224次阅读
没有评论

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