Python列表基本操作

列表

  1. 列表的基本使用

    当我们有多个数据需要按照一定顺序保存的时候,可以考虑列表

    • 列表的表示

      • 使用**[]来表示列表,列表里的每一个数据成为一个元素**,元素之间用逗号隔开

        name=['张三','李四','王五','关羽','张飞','赵云','王昭君','蔡文姬']
        print(name)
        
      • 使用list(可迭代对象)内置类定义一个列表:将一个可迭代对象转换成列表

        name=list(('张三','李四','王五','关羽','张飞','赵云','王昭君','蔡文姬'))
        print(name)
        
    • 列表的下标和切片

      • 和字符串一样,列表也有下标切片,而且用法是一致的

        name=list(('张三','李四','王五','关羽','张飞','赵云','王昭君','蔡文姬'))
        print(name[2])#下标
        print(name[2:5:])#切片
        
      • 不同的是,可以通过修改下标来改变列表对应元素,此时列表已经被修改了

        name=list(('张三','李四','王五','关羽','张飞','赵云','王昭君','蔡文姬'))
        name[3]='秦始皇'
        print(name)
        
  2. 列表的增删改查

    • 可以是用append,insert,extend实现列表的增加数据

      • append在列表的结尾增加数据

      • insert(index,object)在指定索引的前面增加数据

      • extend(iterable)将一个可迭代对象增加到列表结尾

        heros=['阿珂','娜可露露','露娜','韩信','孙悟空','兰陵王','李元芳']
        heros.append('镜')
        print(heros)#在列表的结尾增加数据
        heros.insert(4,'云中君')#在指定索引的前面增加数据
        print(heros)
        x=['李白','貂蝉','上官婉儿']
        heros.extend(x)#将一个可迭代对象增加到列表结尾
        print(heros)
        
    • 删除数据的方法:pop remove clear del

      • **pop()**默认删除列表最后一个数据,并且返回该数据

      • pop(index)删除索引的元素,并且返回该数据

      • remove删除指定的字符,(只删除下标最小的),如果没有,会报错

      • del删除索引的元素它的功能很强大,可以删除变量

      • **clear()**清空一个列表

        master=['王昭君','甄姬','貂蝉','米莱迪','小乔','妲己','安其拉']
        x=master.pop()#默认删除列表最后一个数据,并且返回该数据
        print(x)
        print(master)
        
        master.pop(2)
        print(master)
        
        master.remove('小乔')#删除指定的字符
        print(master)
        
        del master[2]#删除指定索引的字符
        print(master)
        
        master.clear()#清空列表
        print(master)
        
    • 查询数据的方式:**index count in **

      • index查询指定数据在列表中出现的最小索引,如果没有,会报错

      • count查询指定数据在列表中出现的次数

      • in成员运算符,后面只要是可迭代对象即可

        tanks=['张飞','廉颇','庄周','程咬金','东皇太一','项羽','白起','程咬金']
        print(tanks.index('程咬金'))#查询指定数据在列表中出现的最小索引,如果没有,会报错
        print(tanks.count('程咬金'))#查询指定数据在列表中出现的次数
        print('白起' in tanks)
        
  3. 遍历:针对的是可迭代对象,意思是将所有数据访问一遍

    • **for…in **循环本质是不断调用迭代器的 next 方法不断查找下一个数据

    • while循环:需要用到**len(可迭代对象)**获取列表的长度

      #for...in 循环
      killers=['李白','阿珂','娜可露露','兰陵王','赵云','韩信','孙悟空']
      for k in killers:
          print(k)
      
      
      #while循环
      i=0
      while i<len(killers):
          print(killers[i])
          i+=1
      
  4. 冒泡排序

    4.1. 交换两个变量的值

    • 使用第三方变量

    • 使用运算符,只限于数字

    • 使用异或运算符:用到了abb==a这个结果

    • 使用Python独有的运算符

      #交换两个变量的数据
      a=13
      b=20
      #使用第三方变量
      c=a
      a=b
      b=c
      
      #使用运算符,只限于数字
      a=a+b
      b=a-b
      a=a-b
      
      #使用异或运算符:用到了a^b^b==a这个结果
      a=a^b
      b=a^b
      a=a^b
      
      #使用Python独有的运算符
      a,b=b,a
      

    4.2. 冒泡排序的想法:相邻的两个元素比较大小前一个比后一个大,则两个交换位置,直到最大的数排到最后,完成第一轮排序,然后重复上面的操作即可

    num=[6,5,9,8,4,1,5,2,3,7,0]
    j=0
    while j<len(num)-1:
        i=0
        while i <len(num)-1:
            if num[i]>num[i+1]:
                num[i],num[i+1]=num[i+1],num[i]
            i+=1
        print(num)
        j+=1
    print(num)
    

    显然上面的代码重复比较了一些,可以做一些小小的优化

    num=[6,5,9,8,4,1,5,2,3,7,0]
    j=len(num)-1
    while j>0:
        i=0
        while i <j:
            if num[i]>num[i+1]:
                num[i],num[i+1]=num[i+1],num[i]
            i+=1
        print(num)
        j-=1
    print(num)
    
  5. 列表排序**

    • num.sort()是正序,此时num这个列表已经发生改变

    • **num.sort(reverse=True)**是倒序

    • sorted(可迭代对象)内置函数对列表进行排序,此时num这个列表并不发生改变,而是返回一个新列表

    • reverse()将列表中的元素翻转。此时列表也发生了变化

      num=[6,5,9,8,4,1,5,2,3,7,0]
      num.sort()#正序
      print(num)
      num.sort(reverse=True)#倒序
      print(num)
      x=sorted(num)#正序
      y=sorted(num,reverse=True)#倒序
      print(x)
      print(y)
      names=['zhangsan','wangwu','lisi']
      names.reverse()#翻转
      print(names)
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值