当前位置 博文首页 > zy010101博客:Python——列表
列表是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()。