zoukankan      html  css  js  c++  java
  • 零基础入门学习Python(11)--列表:一个打了激素的数组(2)

    前言

    上节课我们介绍一个打了激素的数组,叫做列表。列表我们比作一个大仓库,你所能够具现化的东西,都可以往里面扔,它包罗万象。另外还介绍了三个往列表添加元素的方法,分别是:
    append(),extend()insert()

    append()和extend()这两个方法都只有1个参数:
    append参数是一个准备插入列表的元素.
    extend参数是一个列表,它是用一个列表来扩展另一个列表
    insert()方法有2个参数,第1个参数是带插入位置的索引值,第2个参数是准备插入的元素.

    这个课我们接着谈一下列表常用的一些方法

    知识点

    从列表中获取元素

    跟数组一样,我们可以通过元素的索引值index从列表获取单个元素,注意,列表的索引值是从0开始。
    例:

    >>> member = ['小甲鱼', '小布丁', '黑夜', '怡静', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> member[0]
    '小甲鱼'
    >>> member[1]
    '小布丁'
    >>> temp = member[0]
    >>> member[0] = member[1]
    >>> member
    ['小布丁', '小布丁', '黑夜', '怡静', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> member[1] = temp
    >>> member
    ['小布丁', '小甲鱼', '黑夜', '怡静', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> 

    从列表中删除元素

    • remove()
    >>> member.remove('怡静')
    >>> member
    ['小布丁', '小甲鱼', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    • del
    >>> del member[1]
    >>> member
    ['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> del member[1]
    >>> member
    ['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> del member
    >>> member
    Traceback (most recent call last):
      File "<pyshell#54>", line 1, in <module>
        member
    NameError: name 'member' is not defined
    • pop()
    因为Python的列表是利用栈数据结构进行存储的,因此有pop这个弹栈的方法。
    
    pop方法是从列表中取出一个元素,并返回给你
    
    >>> member.pop()
    'Crazy迷恋'
    >>> member
    ['小布丁', '黑夜', '葫芦娃哇', '竹林小溪']
    >>> 
    >>> name = member.pop()
    >>> name
    '竹林小溪'
    >>> member
    ['小布丁', '黑夜', '葫芦娃哇']
    >>> 
    >>> member.pop(1)
    '黑夜'
    >>> member
    ['小布丁', '葫芦娃哇']
    >>> 

    列表分片

    利用索引值,每次我们可以从列表获取一个元素,但是我们总是贪心的,如果一次性需要获取多个元素,有没有办法实现呢?利用列表分片,我们可以简单的实现这个要求。

    >>> member
    ['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> 
    >>> member[1:3]
    ['黑夜', '葫芦娃哇']
    >>> member
    ['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> 
    >>> member[:3]
    ['小布丁', '黑夜', '葫芦娃哇']
    >>> member[:]
    ['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> member[1:]
    ['黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    >>> member2 = member[:]
    >>> member2
    ['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
    

    课后习题

    测试题

    下边的列表分片操作会打印什么内容?

    >>> list1 = [1,3,2,9,7,8]
    >>> list1[2:5]
    
    运行结果:
    [2, 9, 7]

    请问list1[0]和list1[0:1]一样吗?

    不一样,list1[0]返回第0个元素的值,list1[0:1]返回一个只含有第0个元素的列表。
    
    >>> list1[0]
    1
    >>> list1[0:1]
    [1]
    >>> 

    如果你每次想从列表末尾取出一个元素,并将这个元素插入列表的最前边,你会怎么做?

    >>> list1 = [1, 3, 2, 9, 7, 8]
    >>> 
    >>> list1.insert(0,list1.pop())
    >>> list1
    [8, 1, 3, 2, 9, 7]

    试试打印list1[-3:-1]

    >>> list1 = [1, 3, 2, 9, 7, 8]
    >>> list1[-3:-1]
    [9, 7]

    python 的列表很聪明,支持负数索引,如图:
    这里写图片描述
    正常索引是从左到右索引,负数索引是从右到左。

    在进行分片的时候,我们知道分片开始和位置结束需要进行指定,但其实还有另外一个隐藏的设置:步长。

    在普通的分片操作中,步长默认设置为1,表示逐个遍历元素。其实我们可以人为调整步长达到不可告人的秘密。

    >>> list1 = [1, 3, 2, 9, 7, 8]
    >>> list1[0:6:2]
    [1, 2, 7]
    
    
    >>> list1[::0]
    Traceback (most recent call last):
      File "<pyshell#32>", line 1, in <module>
        list1[::0]
    ValueError: slice step cannot be zero
    
    >>> list1[::-2]
    [8, 9, 3]

    可用利用分片完成列表的拷贝list2 = list1[:],那事实上可不可以直接写成list2 = list1更加简洁呢?
    例如:

    >>> list1 = [1, 3, 2, 9, 7, 8]
    >>> list2 = list1[:]
    >>> list2
    [1, 3, 2, 9, 7, 8]
    >>> 
    >>> list3 = list1
    >>> list3
    [1, 3, 2, 9, 7, 8]
    >>> 
    
    看上去貌似一样。但事实上呢?我们利用列表的一个方法进行修改,看下差别:
    >>> list1.sort()
    >>> list1
    [1, 2, 3, 7, 8, 9]
    
    >>> list2
    [1, 3, 2, 9, 7, 8]
    
    >>> list3
    [1, 2, 3, 7, 8, 9]
    >>> 
  • 相关阅读:
    200斤的甄子丹还是这么灵活能打欢乐,拯救无聊就靠他了
    redis 发布与订阅
    洛谷P2294 [HNOI2005]狡猾的商人
    洛谷P2294 [HNOI2005]狡猾的商人
    崛起于Springboot2.X之开发拦截器(21)
    pfSense®2.4.4发布后,原pfSense 黄金会员的服务将免费使用!
    pfSense®2.4.4发布后,原pfSense 黄金会员的服务将免费使用!
    pfSense®2.4.4发布后,原pfSense 黄金会员的服务将免费使用!
    pfSense®2.4.4发布后,原pfSense 黄金会员的服务将免费使用!
    Openssh
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514700.html
Copyright © 2011-2022 走看看