美文网首页程序员初见的Python杂货铺
1.列表的定义及增删改查

1.列表的定义及增删改查

作者: 見贤思齊_ | 来源:发表于2020-11-12 10:52 被阅读0次

    一、列表

    列表由一系列按特定顺序排列的元素组成。我们可以创建包含字母表中所有字母、数字0~9,也可以将任何东西加入列表中,其中的元素之间可以没有任何关系

    鉴于列表通常包含多个元素,所以给列表指定一个表示复数的名称(如:names)是一个不错的主意

    python中,用方括号[]来表示列表,并用逗号来分隔其中的元素

    若是直接打印列表,Python会打印列表的内部表示,包括方括号

    二、定义列表

    我们创建的大多数列表都将是动态的,这意味着在列表创建之后,将随着程序的运行增删元素

    例如:你创建一个游戏,要求玩家射杀小怪兽;为此,可在开始时将一些小怪兽存储在列表中,然后每当有小怪兽被消灭时,都将其从列表中删除,而每次有新的小怪兽出现在屏幕上时,都将其添加到列表中。在整个游戏运行期间,小怪兽列表的长度将不断变化。

    1.[]中括号

    用中括号括起一堆数据即可,数据之间用逗号隔开

    lis = [1,2,3,4,5]
    

    (1)创建空列表

    不知道要向列表中添加什么数据,也可创建一个空列表。

    empty = []
    

    (2)列表中嵌套列表

    lis1 = [1,'思齐',155.520,[1,2,2] ]
    

    可以看到上面这个列表包含有: 整型、字符串、浮点型数据、子列表。

    2.list()方法

    list()方法用于把一个可迭代对象转换为列表

    list(iterable)
    '''
        功能: 把一个可迭代对象转换为列表.
        
        参数: 
            ① iterable: 可迭代对象。
        
        返回值: 列表。
    '''
    

    (1)创建空列表

    empty = list()
    empty
    

    (2)将字符串中的每个字符迭代存放进列表

    a = list('Hero') 
    a
    

    (3)将元组中的每个元素迭代存放进列表

    b = list( (1,2,3,4,5) )
    b
    

    (4)与range()结合生成数字列表

    numbers = list(range(1,6))
    numbers
    

    三、列表的访问

    可以通过元素的索引值(index)从列表中获取单个元素

    1.访问列表元素

    列表是有序集合,因此想要访问列表的任意元素,只需将该元素的位置或索引告诉Python即可

    要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内

    (1)示例

    ① 例1
    fruits = ['葡萄','草莓','大鸭梨','菠萝']
    print(fruits[2])
    '大鸭梨'
    

    当我们请求获取列表元素时,Python只返回该元素,而不包括方括号和引号。

    此外,还可以对任何列表元素调用一些方法,如title()、uper()等

    2.索引

    列表索引值从 0 开始。

    Python中,凡是顺序索引第一个列表元素的索引为0,而不是1。在大多数编程语言中都是如此,这与列表操作的底层实现相关。因为计算机本身是二进制的,在二进制世界里只有两个数:0 、1,0也就是二进制中第一个数,秉承这个传统,0也就用于表示第一个数。

    如果结果出乎意料,请看看你是否犯了简单的差一错误

    第二个列表元素的索引为1。依此类推,要访问列表的任何元素,都可将其位置减1,并将结果作为索引(index)

    (1)索引为负值

    Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素

    这种语法很有用,因为我们经常需要在不知道列表长度的情况访问最后的元素

    这种约定也适用于其他负数索引,例如:索引-2返回倒数第二个列表元素,素引-3返回倒数第三个列表元素,以此类推。

    ① 示例
    fruits = ['葡萄','草莓','大鸭梨','菠萝']
    fruits[-1]
    '菠萝'
    

    3.使用列表中的各个值

    可像使用其他变量一样使用列表中的各个值。例如,你可以使用拼接根据列表中的值来创建消息。

    animals = ["rabbit","dog","panda","cat"] 
    # 使用animals[2]的值生成一个句子,并将其存储在变量message中
    message = "My favorite animal is the " + animals[2] + "."   
    print(message)
    My favorite animal is the panda.
    

    四、修改列表元素

    1.修改

    修改列表元素的语法和访问列表元素的语法相似。

    通过指定列表名和要修改元素的索引值(index)从列表中获取单个元素,再映射1个新值。

    fruit = ['葡萄','草莓','大鸭梨','菠萝']
    fruit[2] = '大西瓜'
    fruit
    # ['葡萄', '草莓', '大西瓜', '菠萝']
    

    五、添加

    1.append(): 末尾单一元素添加

    列表名.append( 想要添加的元素 )

    '''
        功能: 向列表中添加元素,**每次只能加一个元素,并且是往列表的末尾添加数据**
            (也可理解为追加、排队增加)。
              Append object to the end of the list.
        
        参数: 想要添加的元素。
        
        返回值: 添加完成后的列表。
    '''
    
    ① 追加1个元素
    num = [1,2,3,4,5]
    num.append(6)
    num
    # 会发现参数 6 被添加到列表的末尾。
    
    ② 追加多个元素(可迭代对象)

    若是我们直接添加多个元素,Python会向我们报错TypeError: append() takes exactly one argument (2 given),也就是说append()方法1次只能添加一个参数,那么如果我们就想添加多个元素该如何操作?

    用可迭代对象进行添加多个元素

    Ⅰ.元组
    nums = [1,2,3,4,5,6]
    nums.append( (7,8) )
    print(nums)
    '''
        [1, 2, 3, 4, 5, 6, (7, 8)]
    '''
    
    Ⅱ.列表
    nums = [1,2,3,4,5]
    nums.append(["思齊","永远18岁"])
    print(nums)
    '''
        [1, 2, 3, 4, 5, ['思齊', '永远18岁']]
    '''
    
    Ⅲ.字典
    nums = [1,2,3,4,5]
    nums.append({"姓名":"思齊","年龄":"永远18岁"})
    print(nums)
    '''
        [1, 2, 3, 4, 5, {'姓名': '思齊', '年龄': '永远18岁'}]
    '''
    
    ③ 优点

    方法append()让动态地创建列表易如反掌,例如,你可以先创建一个空列表,再使用一系列的append()添加元素,因为我们经常要等程序运行后,才知道用户要在程序中存储哪些数据。

    为控制用户,可首先创建一个空列表,用于存储用户将要输入的值,然后将用户提供的每一个新值附加到列表中。

    2.extend(): 末尾多元素添加

    列表名.extend( [元素1,元素2,...] )

    '''
        功能: 可向列表中添加多个元素,但是在**列表末尾添加**。
             
        参数: 
            ① 可迭代对象: 将想要添加的元素以 列表 或 元组 形式传入。
                    
        返回值: 添加完成后的列表。
    '''
    
    ① 参数为可迭代对象

    一定要注意,extend()的参数是可迭代对象

    append()方法一样,如果我们直接在方法的括号里添加多个元素,Python还是会向我们报错TypeError: extend() takes exactly one argument (2 given).extend(iterable, /) method of builtins.list instance Extend list by appending elements from the iterable.,不是说append()可以添加多个元素吗?这是为什么呢?原因就在于extend() 接收可迭代对象。

    Ⅰ.传入元组
    nums = [1,2,3,4,5]
    nums.extend( (9,10) )
    print(nums)
    '''
        [1, 2, 3, 4, 5, 9, 10]
        向extend()传入一个元组,添加成功。
    '''
    
    Ⅱ.传入列表
    nums = [1,2,3,4,5]
    nums.extend( [7,8] )
    print(nums)
    '''
        [1, 2, 3, 4, 5, 7, 8]
        向extend()传入一个列表,添加成功。
    '''
    
    Ⅲ.传入字典(不可取)
    nums = [1,2,3,4,5]
    nums.extend( {"姓名":"思齊","年龄":"永远18岁"} )
    print(nums)
    '''
        [1, 2, 3, 4, 5, '姓名', '年龄']
    '''
    如果用 + 只是临时添加。
    

    向列表传入一个字典是不可取的,因为会造成数据丢失,从上述结果可看到,只是把键名取出,而键值被省略。

    3.insert():任意位置添加

    insert(索引,值)

    '''
        功能: 可向列表任意位置添加元素。
                  
        参数: 
            ① 索引:列表中的位置。 
            ② 值:在这个位置添加什么元素。
        
        返回值: 添加完成后的列表。
    '''
    
    insert(index, object, /) method of builtins.list instance.Insert object before index.
    
    ① 向列表任意位置添加单个元素
    num = [1,2,3,4,5]
    num.insert(0,0)
    num
    
    ② 向列表任意位置添加多个元素
    num = [1,2,3,4,5]
    num.insert(5,[6,7])
    num
    # outout: [1, 2, 3, 4, 5, [6, 7]]
    
    num.insert(6,[8,9,10])
    num
    # outout: [1, 2, 3, 4, 5, [6, 7], [8, 9, 10]]
    
    Ⅰ.多个元素被看作一个整体

    其实,insert()方法添加多个元素,并不是实际意义上的添加多个元素,而是添加的多个元素被看成一个整体

    六、删除

    我们经常需要从列表中删除一个或多个元素。例如:玩家将游戏中的一个小怪兽消灭后,你很可能要将其从存活的小怪兽列表中删除;当用户在你创建的web应用中注销其账户时,你需要将该用户从活跃用户列表中删除。你可以根据位置或值来删除列表中的元素

    1.使用del语句删除元素

    如果知道要删除的元素在列表中的位置,可使用del语句

    del 是一个语句,不是一个列表的方法,所以不需要在 del 后面加上小括号()。

    del 加列表名,可以删除整个列表

    del 加位置索引,可以删除该位置上的元素

    (1)怎么做?

    ① 删除整个列表
    del fruits
    
    ② 删除指定位置上的元素
    fruits = ['葡萄','草莓','大鸭梨','菠萝']
    del fruits[1]   # 删除草莓
    
    ③ 连续删除
    fruits = ['葡萄','草莓','大鸭梨','菠萝']
    del (fruits[1],fruits[2])
    
    # 删除了草莓、菠萝,先删除的是fruits中索引为1的,接着再删除新列表中索引为2的。
    

    (2)永久性删除

    使用del语句将值从列表中删除后,你就无法再访问它了。

    2.pop():先查出来在删掉,在数据库有用

    有时候,你要将元素从列表中删除,并接着使用它的值。

    例如:你可能需要获取刚被消灭的小怪兽的x和y坐标,以便在相应的位置显示爆炸效果;在Web应用程序中,你可能要将用户从活跃成员列表中删除,并将其加入到非活跃成员列表中。

    方法pop()默认删除列表末尾的元素,并让你能够接着使用它。该术语弹出(pop)就源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

    列表名.pop() 或 列表名.pop( 索引值 )

    '''
        功能: 默认删除最后一个元素,或删除指定元素。 
    
        参数: 
            ① 不写值,默认删除最后一个。
            ② 索引值: 加上一个索引值作为参数的时候,会弹出这个索引值对应的元素。     
    
        返回值: 删除完成后的列表。
    '''   
    pop(index=-1, /) method of builtins.list instance
                Remove and return item at index (default last).
             Raises IndexError if list is empty or index is out of range.
    
    ① 默认删除最后一个
    chinas = ['凤凰','麒麟','玄武','白虎','青龙']
    a = china.pop()
    print(a)
    print(china)
    '''
        青龙
        ['凤凰', '麒麟', '玄武', '白虎']
    '''
    
    ② 根据索引值删除
    china.pop(3)
    china
    # ['凤凰', '麒麟', '玄武']
    

    3.remove(): 删除指定元素

    使用remove()删除元素,并不需要知道这个元素在列表中的具体位置,只需要知道该元素存在于列表中即可

    若要删除的东西在列表中根本不存在,程序就会报错

    remove() 并不能指定删除某个位置的元素,这需要用 del 实现。

    列表名.remove( 元素1 )

    remove(元素值)
    '''
        功能: 删除指定元素。
                  
        参数: 
            ① 列表中存在的元素。
        
        返回值: 删除完成后的列表。
    '''
    
    ① 只删除指定的第一个

    只删除指定的第一个值,如果要删除的值在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

    fruits = ['葡萄','菠萝','草莓','大鸭梨','菠萝']
    fruits.remove('菠萝')
    fruits
    # output: ['葡萄', '草莓', '大鸭梨','菠萝']
    
    ② 删除不存在的元素
    python
    fruits = ['葡萄','菠萝','草莓','大鸭梨','菠萝']
    fruits.remove('芒果')
    fruits
    
    # ValueError: list.remove(x): x not in list
    
    ③ 删除时也可接着使用该值

    在定义列表后,先将值存储在变量中,接着,用这个变量来告诉Python将哪个值从列表中删除,最后,在列表中该值被删除,但它还存储在变量中。

    python
    fruits = ['purple','菠萝','草莓','大鸭梨','菠萝']
    print(fruits)
    fruit = fruits[0]
    fruits.remove(fruit)
    print(fruits)
    print("\nA " + fruit.title() + " is too expensive for me.")
    '''
        ['purple', '菠萝', '草莓', '大鸭梨', '菠萝']
        ['菠萝', '草莓', '大鸭梨', '菠萝']
    
        A Purple is too expensive for me.
    '''
    

    4.clear():清空列表中所有元素

    列表名.clear()

    python
    '''
        功能: 清空列表中所有元素。 
    
        参数: 无。      
    
        返回值: 空列表。
    '''   
    
    ① 怎么做?
    python
    fruit = ['葡萄','草莓','大鸭梨','菠萝']
    fruit.clear()
    

    5.方法的选择

    当我们不确定该选择del语句、pop()、remove()中的哪一个的时候,我们可以按照以下一个简单判断标准:若是我们要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;若是我们在删除元素之后还想继续使用它,就是用pop()或remove()方法

    相关文章

      网友评论

        本文标题:1.列表的定义及增删改查

        本文链接:https://www.haomeiwen.com/subject/qwwubktx.html