7 列表

7.1 列表介绍

  • 列表的格式
      namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    
  • 比C语言的数组强大的地方在于列表中的元素可以是不同类型的
      testList = [1, 'a']
    
  • 打印列表
      namesList = ['xiaoWang','xiaoZhang','xiaoHua']
      print(namesList[0])
      print(namesList[1])
      print(namesList[2])
    

7.2 列表操作

7.2.1 增

  • append:通过append可以向列表添加元素

      #定义变量A,默认有3个元素
      A = ['xiaoWang','xiaoZhang','xiaoHua']
    
      print("-----添加之前,列表A的数据-----")
      for tempName in A:
          print(tempName)
    
      #提示、并添加元素
      temp = input('请输入要添加的学生姓名:')
      A.append(temp)
    
      print("-----添加之后,列表A的数据-----")
      for tempName in A:
          print(tempName)
    

    图 1

    • 列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据
    • 如果append()追加的数据是一个序列,则追加整个序列到列表

      name_list = ['Tom', 'Lily', 'Rose']
      name_list.append(['xiaoming', 'xiaohong'])
      
      print(name_list) # 结果:['Tom', 'Lily', 'Rose', ['xiaoming', 'xiaohong']]
      
  • extend:通过extend可以将另一个集合中的元素逐一添加到列表中
      a = [1, 2]
      b = [3, 4]
      a.append(b) # [1, 2, [3, 4]]
      a.extend(b) # [1, 2, [3, 4], 3, 4]
    
  • insert:insert(index, object) 在指定位置index前插入元素object
      a = [0, 1, 2]
      a.insert(1, 3) # [0, 3, 1, 2]
    

7.2.2 删

  • del:根据下标进行删除

      movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
      print('------删除之前------')
      for tempName in movieName:
          print(tempName)
    
      del movieName[2] #删除指定数据
      # del movieName  #删除列表
      print('------删除之后------')
      for tempName in movieName:
          print(tempName)
    
      ------删除之前------
      加勒比海盗
      骇客帝国
      第一滴血
      指环王
      霍比特人
      速度与激情
      ------删除之后------
      加勒比海盗
      骇客帝国
      指环王
      霍比特人
      速度与激情
    
  • pop:删除最后一个元素

      movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
      print('------删除之前------')
      for tempName in movieName:
          print(tempName)
    
      movieName.pop()
    
      print('------删除之后------')
      for tempName in movieName:
          print(tempName)
    
      ------删除之前------
      加勒比海盗
      骇客帝国
      第一滴血
      指环王
      霍比特人
      速度与激情
      ------删除之后------
      加勒比海盗
      骇客帝国
      第一滴血
      指环王
      霍比特人
    
  • remove:根据元素的值进行删除

      movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
      print('------删除之前------')
      for tempName in movieName:
          print(tempName)
    
      movieName.remove('指环王')
    
      print('------删除之后------')
      for tempName in movieName:
          print(tempName)
    
      ------删除之前------
      加勒比海盗
      骇客帝国
      第一滴血
      指环王
      霍比特人
      速度与激情
      ------删除之后------
      加勒比海盗
      骇客帝国
      第一滴血
      霍比特人
      速度与激情
    

7.2.3 改

  #定义变量A,默认有3个元素
  A = ['xiaoWang','xiaoZhang','xiaoHua']

  print("-----修改之前,列表A的数据-----")
  for tempName in A:
      print(tempName)

  #修改元素
  A[1] = 'xiaoLu'

  print("-----修改之后,列表A的数据-----")
  for tempName in A:
      print(tempName)
  ~~~py
  -----修改之前,列表A的数据-----
  xiaoWang
  xiaoZhang
  xiaoHua
  -----修改之后,列表A的数据-----
  xiaoWang
  xiaoLu
  xiaoHua

7.2.4 查

  • python中查找的常用方法为:① in(存在),如果存在那么结果为true,否则为false; ② not in(不存在),如果不存在那么结果为true,否则false

      #待查找的列表
      nameList = ['xiaoWang','xiaoZhang','xiaoHua']
    
      #获取用户要查找的名字
      findName = input('请输入要查找的姓名:')
    
      #查找是否存在
      if findName in nameList:
          print('在字典中找到了相同的名字')
      else:
          print('没有找到')
    

    图 1

    图 2

    • in的方法只要会用了,那么not in也是同样的用法,只不过not in判断的是不存在
  • index:返回指定数据所在位置的下标

      a = ['a', 'b', 'c', 'a', 'b']
    
      a.index('a', 1, 3) # 注意是左闭右开区间
      Traceback (most recent call last):File "<stdin>", line 1, in <module> ValueError: 'a' is not in list
    
      a.index('a', 1, 4) # 3
    
      a.count('b') # 2
    
      a.count('d') # 0
    
  • len():访问列表长度,即列表中数据的个数

      name_list = ['Tom', 'Lily', 'Rose']
    
      print(len(name_list))  # 3
    

7.2.5 排序

  • sort():将list按特定顺序重新排列,默认为由小到大,sort方法还有两个可选参数:key 和 reverse

    • key在使用时必须提供一个排序过程总调用的函数
    • reverse实现降序排序,需要提供一个布尔值,参数reverse=True为倒序

      a = [1, 4, 2, 3]
      
      a.sort() # [1, 2, 3, 4]
      
      a.sort(reverse=True) # [4, 3, 2, 1]
      
      x = ['mmm', 'mm', 'mm', 'm' ]
      x.sort(key = len)
      print(x) # ['m', 'mm', 'mm', 'mmm']
      
  • reverse():将list逆置

      a = [1, 4, 2, 3]
    
      a.reverse() # [3, 2, 4, 1]
    

7.2.6 复制

  • copy
      movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
      movieName2 = movieName.copy()
      print(movieName2)
    

7.3 列表循环遍历

  • for 循环
      namesList = ['xiaoWang','xiaoZhang','xiaoHua']
      for name in namesList:
          print(name)
    
      xiaoWang
      xiaoZhang
      xiaoHua
    
  • while 循环

      namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    
      length = len(namesList)
    
      i = 0
    
      while i<length:
          print(namesList[i])
          i+=1
    
      xiaoWang
      xiaoZhang
      xiaoHua
    

7.4 列表嵌套

  • 类似while循环的嵌套,列表也是支持嵌套的,一个列表中的元素又是一个列表,那么这就是列表的嵌套
    schoolNames = [['北京大学','清华大学'],
                    ['南开大学','天津大学','天津师范大学'],
                    ['山东大学','中国海洋大学']]
    
  • 应用:一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配

      import random
    
      # 定义一个列表用来保存3个办公室
      offices = [[],[],[]]
    
      # 定义一个列表用来存储8位老师的名字
      names = ['A','B','C','D','E','F','G','H']
    
      i = 0
      for name in names:
          index = random.randint(0,2)    
          offices[index].append(name)
    
      i = 1
      for tempNames in offices:
          print('办公室%d的人数为:%d'%(i,len(tempNames)))
          i+=1
          for name in tempNames:
              print("%s"%name,end='')
          print("\n")
          print("-"*20)
    

results matching ""

    No results matching ""