当前位置 博文首页 > zy010101博客:Python——列表

    zy010101博客:Python——列表

    作者:[db:作者] 时间:2021-06-11 21:13

    列表是python中最基础,最强大的数据结构之一。python的列表可以容纳任何东西,其中的元素可以没有任何关系。python的列表就像一个可以容纳万物的容器。但是需要注意,这个容器中的数据是有序的。?在Python 中,用方括号([])表示列表,并用逗号分隔其中的元素。下面是一个例子:

    my_list = [1, 'X', [1, 'x']]
    print(my_list)
    

    尝试运行它,可以得到如下的结果:

    查找列表中的元素

    ?python打印列表的时候,会将外面的方括号打印出来。既然列表是有序的,那么python肯定提供了有序访问的方式,那就是使用下标来进行索引。如下所示:

    my_list = [1, 'X', [1, 'x']]
    print(my_list)          # 打印整个列表
    print(my_list[0])       # 打印列表中的第一个元素
    print(my_list[1])       # 打印列表中的第二个元素
    print(my_list[2])       # 打印列表中的第三个元素
    print(my_list[2][0])    # 打印列表中第三个元素,不过由于第三个元素也是列表,因此my_list[2][0]将会打印子列表中的第一个元素
    print(my_list[2][1])    # 同理,这将打印子列表中第二个元素

    输出的结果如下所示:?

    python和大多数的计算机编程语言一样,索引是从0开始,而不是1。但是python为列表提供了从尾部开始访问的方式,即使你不知列表有多长。python中可以使用下标-1来索引列表的最后一个元素。下面的例子非常值得认真思考。

    my_list = [1, 'X', [1, 'x']]
    
    print(my_list[-1])      # 打印最后一个元素
    print(my_list[-2])
    print(my_list[-3])
    
    print(my_list[-1][0])   # 打印子列表的第一个元素
    print(my_list[-1][-2])
    
    print(my_list[-1][1])   # 打印子列表的第二个元素
    print(my_list[-1][-1])
    

    这段代码执行的结果如下所示,对于这个结果,只要你仔细看注释,自己跑一跑代码,应该很容易就可以理解。?

    修改列表中的元素

    修改列表中某个元素的值和使用某个元素的值使用的方式是一样的,如下所示:

    my_list[0] = "1"        #使用下标索引来修改列表中第一个元素的值。

    向列表中增加元素?

    这种方式和C语言中修改数字中某个元素的值是非常类似的做法,不过列表中的元素的类型是可以是任意的,不像数组。这正是python的强大之处。同时列表还提供了强大的扩充能力,你可以随时向列表中添加新元素。你可以使用append()方法在列表末尾添加新元素,或者是使用insert()方法在列表的任何位置添加新元素。虽然insert()方法的功能包含了append的功能,但是由于我们会频繁的使用追加功能,单独有一个append()函数是更好的,当然了,这两种方法的效率肯定是不同的,因为列表是动态的。我们暂时不深究这个问题。

    my_list.append("Hello World")       # 在列表末尾追加Hello World
    name = "Nicholas Zhao si"
    my_list.append(name)        # 在列表末尾追加变量name的值
    age = 22
    my_list.insert(-1, age)      # 在列表的最后一个元素之前插入变量age的值
    print(my_list)

    输出结果如下所示:

    删除列表中的元素

    有增加,那么必然有删除,删除一个元素的方法有很多种,下面来一一介绍。

    首先是del语句,这是一个语句,不是列表这个数据结构专有的删除方式,它可以用在很多地方。下面是一个例子,我们首先来尝试删除name这个变量,看看能否删除掉。

    del name
    print(name)

    程序执行结果如下所示,可以看到del语句是python中通用的删除语句,而不仅仅是在列表中可以使用。?

    这个del其实是很有意思的东西,它删除的是变量,而不是变量所引用内存中的数据。就相当于删除了某块内存上的一个引用计数。这个问题之后有时间深入python的时候在讨论。其实现在也可以小小的展示一下del的做法。可以看下面这个例子。在此之前,需要介绍一个函数id()。它的作用是一下几点。

    id()函数返回指定对象的唯一 id。
    Python 中的所有对象都有其自己的唯一 id。
    id 在创建时已分配给对象。
    id 是对象的内存地址,并且在每次运行程序时都不同。

    我打算用id()函数来取地址,从而展示del的做法。id()函数的用法也很简单id([object])即可。例子如下所示:

    name_1 = "Nicholas Zhao si"     # name_1和name_2是对同一块内存的引用计数。
    name_2 = "Nicholas Zhao si"
    
    '''
    id()函数返回指定对象的唯一 id。
    Python 中的所有对象都有其自己的唯一 id。
    id 在创建时已分配给对象。
    id 是对象的内存地址,并且在每次运行程序时都不同。
    '''
    
    print(id(name_1))
    print(id(name_2))
    
    del name_1
    
    print(id(name_2))

    我们来看打印结果,如下所示:

    可以看到name_2变量的地址依旧没有变化,那就说明del只是删除变量,并不去管内存中的值。删除了name_1这个标记之后,你就不能再使用name_1这个标记了。好了,言归正传,来使用del删除列表中的某个元素。可以看下面的例子。

    print(my_list)
    del my_list[0]
    print(my_list)

    程序运行结果如下所示:?

    python的列表本身还提供了pop方法来进行删除,这方法听起来很像是栈的方法,但是实际上它可以删除非栈顶元素。这个方法的好处是,它将元素弹出以后,你还可以使用这个元素。例如:

    top = my_list.pop()     # 默认弹出列表中最后一个元素
    print(top)
    print(my_list)
    top = my_list.pop(-2)   # 指定位置进行弹出
    print(top)
    print(my_list)

    程序执行结果如下所示:?

    直接借用书上的一句话来说明什么时候用del,什么时候用pop()方法。

    如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用 del 语句;如果你要在删除元素后还能继 续使用它,就使用方法 pop()。
    下一篇:没有了