Python学习笔记-列表(list)

什么是list

list 列表,无长度限制,可以存放任意类型

创建
list1 = []                          # 创建一个空列表
list2 = ['ab',12,15.64,15+9j,True]  # 创建一个列表并填充初始数据

当新建一个list并用已有list对其初始化时,有两种情况

new_list = old_list # 1 赋值

new_list = old_list[:] # 2 切片复制

用#1来初始化时,两个list使用同一片内存空间,修改任意一个list都会使另一个list同步修改

用#2来初始化时,两个list使用不同内存空间,修改任意一个list不会使另一个list同步修改

list0 = [1,2,3,4,5,6]
list1 = list0
list2 = list0[:]
list1[0] = 0
print(list0)
print(id(list0))
print('--------------------')
print(list1)
print(id(list1))
print('--------------------')
print(list2)
print(id(list2))
===================================
[0, 2, 3, 4, 5, 6]
1732992197192
--------------------
[0, 2, 3, 4, 5, 6]
1732992197192
--------------------
[1, 2, 3, 4, 5, 6]
1732992197256
访问
  • 通过下标索引

    list2 = ['ab',12,15.64,15+9j,True]
    print(list2[3].real)
    ===============================================
    15.0
    
  • 切片方式访问

    list2 = ['ab',12,15.64,15+9j,True]
    print(list2[:2])    # 取前2位
    print(list2[3:])    # 从第4位开始取到结束
    print(list2[::2])   # 从第1位开始隔一个取一个
    print(list2[::-1])  # 反向遍历
    ===============================================
    ['ab', 12]
    [(15+9j), True]
    ['ab', 15.64, True]
    [True, (15+9j), 15.64, 12, 'ab']
    
增删改查
  • 增加的方法有 .append() .insert() .extend()

    • .append() 在列表的末尾追加项

      list2 = ['12','23','34','45']
      list2.append('56')
      list2.append('67')
      print(list2)
      ===================================
      ['12', '23', '34', '45', '56', '67'] 
      
    • .insert() 在指定位置加入项

      list2 = ['12','23','34','45']
      list2.insert(0,'00')    # insert(位置,项)
      list2.insert(1,'01')
      print(list2)
      ===================================
      ['00', '01', '12', '23', '34', '45']
      
    • .extend() 将一个可迭代的对象添加到列表中

       list1 = ['00','01']
       list2 = ['12','23','34','45']
       list1.extend(list2)
       print(list1)
       ===================================
       ['00', '01', '12', '23', '34', '45']
      
  • 删除的方法有 .remove() .pop() .clear() del

    • .remove() 直接从列表中删除第一个找到的元素,没有找到则报错

      list2 = ['00','12','23','34','45','00']
      print(list2)
      list2.remove('00')
      print(list2)
      ===================================
      ['00', '12', '23', '34', '45', '00']
      ['12', '23', '34', '45', '00']
      
    • .pop() 从指定索引位置删除,当参数缺省时,删除最后一位,当参数越界时报错

      list2 = ['00','12','23','34','45','00']
      print(list2)
      list2.pop()
      print(list2)
      list2.pop(1)
      print(list2)
      ===================================
      ['00', '12', '23', '34', '45', '00']
      ['00', '12', '23', '34', '45']
      ['00', '23', '34', '45']
      
    • .clear() 清空内容

      list2 = ['00','01','02','03','04']
      print(list2)
      list2.clear()     
      print(list2)
      ===================================
      ['00', '01', '02', '03', '04']
      []
      
    • del 系统中通用的删除方式,从指定索引位置删除,支持切片。缺省时删除容器

      list2 = ['00','01','02','03','04']
      print(list2)
      del list2[0]     # 删掉第0位
      print(list2)
      del list2[0:2]   # 删掉第0到2位
      print(list2)
      del list2[:]     # 清空内容,但保留地址
      print(list2)
      del list2        # 清空内容同时回收地址
      print(list2)
      ===================================
      ['00', '01', '02', '03', '04']
      ['01', '02', '03', '04']
      ['03', '04']
      []
      NameError: name 'list2' is not defined
      
  • 修改的方法有 list[index] = new

    • 列表[位置] = 新值 利用此语法替换指定位置的元素

      list2 = ['00','01','02','03','02']
      print(list2)
      list2[0] = '***'
      print(list2)
      ===================================
      ['00', '01', '02', '03', '02']
      ['***', '01', '02', '03', '02']
      
  • 查询的方法有 .index()

    • .index() 查找指定的元素,返回第一个找到的元素的索引,没有找到则报错

      list2 = ['00','01','02','03','02']
      print(list2.index('02'))
      print(list2.index('02',3))  # 指定从第3号索引位置开始查找
      ===================================
      2
      4
      
其他方法
  • '连接符'.join() 利用连接符将可迭代的对象进行连接,对象中的元素必须全部为 str 类型

    list1 = ['0','1','2','3','4']
    ss1 = ''.join(list1)
    ss2 = '*'.join(list1)
    print(ss1)
    print(ss2)
    ===================================
    01234
    0*1*2*3*4
    
  • .copy() 浅拷贝,执行copy()动作,返回一个新的地址,存放的内容与原来相同

    对于list而言,因为其可以嵌套多维,故浅拷贝有以下特性

    当list仅有一维时,修改list中元素,实际上是修改地址让其指向新的内容

    源list和被修改的经复制的list表现出不同

    当list有多维时,修改list中嵌套的list中的元素,并没有修改嵌套首地址

    源list和被修改的经复制的list可能表现相同

    list0 = [1,2,3,4,5,6]
    list1 = [1,[2,3],[4,5,6]]
    list0_copy = list0.copy()
    list1_copy = list1.copy()
    list0_copy[3] = 0
    list1_copy[0] = 0
    list1_copy[2][1] = 0
    print(list0)
    print(list0_copy)
    print('-'*20)
    print(list1)
    print(list1_copy)
    ===================================
    [1, 2, 3, 4, 5, 6]
    [1, 2, 3, 0, 5, 6]
    --------------------
    [1, [2, 3], [4, 0, 6]]
    [0, [2, 3], [4, 0, 6]]
    
  • .count() 计数,统计list中目标元素的个数

    list1 = [0,1,0,1,0,1,0,1,0,0]
    print(list1.count(0))
    =====================================
    6
    
  • sorted().sort() 排序

    默认升序,规定参数 reverse = True 按降序排序

    或者排序完成后添加.reverse() 实现翻转

    list1 = [1,5,4,3,9,7,5]
    list1 = sorted(list1)
    print(list1)
    list1.sort(reverse = True)
    print(list1)
    ================================
    [1, 3, 4, 5, 5, 7, 9]
    [9, 7, 5, 5, 4, 3, 1]
    
  • .sum() 求和

  • .min() 找最小值

  • .max() 找最大值

支持的符号
  • + 将两个列表拼成一个新列表
  • * 生成一个将原列表重复N遍的新列表
  • in 判断元素是否在列表中,返回布尔型的值
  • is 判断两个列表是否在一个地址
  • [ ] 下标
  • [:] 切片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值