前言:
本文的主要内容是介绍Python中的列表及其方法的使用,涉及到的方法包括对列表元素进行修改、添加、删除、排序以及求列表长度等,此外还介绍了列表的遍历、数值列表、切片和元组的一些操作,文中附有代码以及相应的运行结果辅助理解。
一、列表简介
列表由一系列按特定顺序排列的元素组成,它能够在一个地方存储成组的信息,其中元素的个数可以只有几个,也可以有数百万个。
在Python中,用方括号来表示列表,并用逗号来分隔其中的元素,每个元素用单引号(也可以是双引号)括起来。
下面的代码就是一个简单的列表示例:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear']
尝试打印一下列表,代码如下:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print(fruits)
输出结果如下图:
可以看到,如果简单的打印列表,其输出结果就包含方括号、引号、元素名称和逗号,这不是期待的输出,下面来介绍怎么访问列表元素。
二、访问列表元素
列表是一个有序的集合,因此要访问列表中的任何一个元素,只要给出列表的名称,再给出该元素的索引并将其放在方括号内,即可实现访问。
在Python中,索引是从0开始的,元素的索引均是其位置减1。
如果不知道列表的长度,但要访问最后一个元素,只要将索引指定为-1,Python即可返回最后一个列表元素,同理,索引为-2可返回倒数第二个列表元素。
下面是访问列表元素的例子:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print("The first element of fruits is "+fruits[0]+".") print("The second element of fruits is "+fruits[1]+".") print("The last element of fruits is "+fruits[-1]+".") #访问最后一个列表元素
输出结果如下图所示:
三、修改、添加和删除列表元素
1.修改列表元素
修改列表元素只要指定列表名和要修改的元素的索引,再赋值给该元素新值即可。
下面是修改列表元素的例子:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print('Before modify:\nfruits = '+str(fruits)) fruits[1] = 'mango' #修改第二个元素 print('After modify:\nfruits = '+str(fruits))
输出结果如下图所示:
2.在列表中添加元素
在列表中添加元素有以下两个方法:
- append(value) —— 在列表末尾添加元素。
- insert(index,value) —— 在列表指定的位置添加元素。
方法append()
通过追加的方式在列表的末尾插入元素,这很方便,但是有时候需要在列表指定的位置插入某个元素,这时就需要用到方法insert()
,将元素插入到指定的位置后,原列表中该位置之后的元素索引均加1,该位置之前的元素索引不变。
在列表中添加元素的例子:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print('Original:\nfruits = '+str(fruits)) fruits.append('mango') print('After append:\nfruits = '+str(fruits)) fruits.insert(2, 'watermelon') print('After insert:\nfruits = '+str(fruits))
输出结果如下图所示:
3.从列表中删除元素
从列表中删除元素有以下三个方法:
- del listname[index] —— 从列表中删除一个元素,且不再使用。
- pop(index) —— 从列表中删除一个元素,后续还会再使用。
- remove(‘element name’) —— 不知道要从列表中删除的值所处的位置,但知道要删除元素的值。
如果要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果要在删除元素后还能继续使用它,就使用方法pop();如果只知道要删除的元素的值,就使用方法remove(),方法remove()只删除第一个指定的值,如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。
删除掉某一元素后,该元素之后的元素索引均减1,该元素之前的元素索引不变。
下面是从列表中删除元素的例子:
fruits = ['grape', 'apple', 'watermelon', 'banana', 'orange', 'apple', 'pear', 'mango'] print('Original:\nfruits = '+str(fruits)) del fruits[2] #删除列表的第三个元素 print('After del:\nfruits = '+str(fruits)) fruit_popped = fruits.pop(-1) #删除列表的最后一个元素 print('After pop:\nfruits = '+str(fruits)) print('The popped fruit is ' + fruit_popped + '.') fruit_remove = 'apple' fruits.remove(fruit_remove) #删除列表中名为fruit_remove的第一个元素 print('After remove:\nfruits = '+str(fruits)) print('The removed fruit is ' + fruit_remove + '.')
输出结果如下图所示:
四、对列表元素排序
对列表元素排序有以下三个方法:
- sort() —— 对列表进行永久性排序。
- sorted() —— 对列表进行临时排序。
- reverse() —— 反转列表元素的排列顺序。
下面是使用sort()对列表元素排序的例子:
fruits = ['grape', 'apple', 'watermelon', 'banana', 'orange', 'pear', 'mango'] print('原列表:\nfruits = '+str(fruits)) fruits.sort() #按首字母顺序 print('顺序排列:\nfruits = '+str(fruits)) fruits.sort(reverse=True) #按首字母倒序 print('倒序排列:\nfruits = '+str(fruits))
输出结果如下图所示:
下面是使用sorted()对列表元素排序的例子:
num = ['1', '8', '6', '4', '9'] #这里的列表元素不加引号也可 print('原列表:\nnum = '+str(num)) print('临时排序:\nnum = '+str(sorted(num))) #临时排序 print('再一次输出原列表:\nnum = '+str(num))
输出结果如下图所示:
下面是使用reverse()对列表元素排序的例子:
fruits = ['grape', 'apple', 'watermelon', 'banana', 'orange', 'pear', 'mango'] print('原列表:\nfruits = '+str(fruits)) fruits.reverse() #逆向排列列表元素 print('逆向排列:\nfruits = '+str(fruits))
输出结果如下图所示:
五、确定列表长度
确定列表长度的方法如下:
- len() —— 求列表长度。
下面是确定列表长度的例子:
fruits = ['grape', 'apple', 'watermelon', 'banana', 'orange', 'pear', 'mango'] print('列表 fruits 的长度为:'+str(len(fruits))) num = ['1', '8', '6', '4', '9'] print('列表 num 的长度为:'+str(len(num)))
输出结果如下图所示:
六、遍历列表
在Python中,如果需要对列表中的每个元素都执行相同的操作,可使用for循环。下面是遍历整个列表的例子,注意for循环中各代码行的缩进,缩进不同,执行的次数也不同。
fruits = ['grapes', 'apples', 'bananas', 'oranges', 'pears'] for fruit in fruits: print(fruit) print('I like '+str(fruit)+'.') #缩进,列表的长度是多少,就执行多少次 print('There are '+str(len(fruits))+' fruits here.') #不缩进,for循环结束后执行,执行1次
输出结果如下图所示:
编写for循环时,用于存储列表中每个值的临时变量可以指定任何名称,一般使用单数和复数式的名称可帮助我们更好地判断代码段处理的是单个列表元素还是整个列表。
七、创建数值列表
列表非常适合用于存储数字集合,而Python提供了很多工具可帮助我们高效地处理数字列表,下面来看怎么创建数值列表。
1.函数range()的使用
range(start, end, step length) —— 在start到end这个左闭右开区间上生成步长为step length的一系列数字,含start值但不含end值,如果没有参数step length,默认步长为1。
下面是函数range()使用的例子:
print('1-5之间步长为1的输出:') for value in range(1,5): print(value) print('1-5之间步长为2的输出:') for value in range(1,5,2): print(value)
输出结果如下图所示:
2.创建数字列表
将range()
作为list()
的参数,输出将为一个数字列表。当然,也可以创建一个空的列表,然后通过for循环将函数range()生成的数依次追加到列表中,这样也可以生成一个数字列表。
下面是使用函数range()创建数字列表的例子:
nums = list(range(1,5)) #直接使用函数list()创建列表 print('方法一:nums = '+str(nums)) nums=[] #通过for循环创建列表 for value in range(1,5): nums.append(value) print('方法二:nums = '+str(nums))
输出结果如下图所示:
可以看到,这两种方法的输出结果是一样的。
3.列表解析
列表解析是将for循环和创建新元素的代码合并成一行,并自动附加新元素。
下面通过一个例子了解列表解析:
squares = [] for value in range(1,11): squares.append(value**2) print('一般方法:squares = ' + str(squares)) squares = [value**2 for value in range(1,11)] #列表解析 print('列表解析法:squares = ' + str(squares))
输出结果如下图所示:
由输出结果可知,虽然两者的输出结果相同,但是列表解析能够有效的缩减代码的行数。
4.处理数字列表的函数应用
下面是几个专门用于处理数字列表的Python函数:
- min() —— 求列表最小值。
- max() —— 求列表最大值。
- sum() —— 求列表元素之和。
下面是这几个函数应用的例子:
nums = [value for value in range(1,11)] print('nums = ' + str(nums)) print('列表nums中的最小值为:' + str(min(nums))) print('列表nums中的最大值为:' + str(max(nums))) print('列表nums的所有元素之和为:' + str(sum(nums)))
输出结果如下图所示:
八、切片
创建切片需要指定要使用的第一个元素和最后一个元素的索引,与函数range()类似,Python在到达指定的第二个索引前面的元素后停止。可以灵活运用索引使其从开头访问或访问至列表末尾,甚至从头至尾复制列表。
下面是切片应用的例子:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print('fruits = '+str(fruits)) print('列表fruits的前三个元素:'+str(fruits[:3])) print('列表fruits的后三个元素:'+str(fruits[-3:])) print('列表fruits的全部元素:'+str(fruits[:])) #复制列表 print('遍历列表fruits的前三个元素:') for fruit in fruits[0:3]: #遍历列表fruits的前三个元素 print(fruit)
输出结果如下图所示:
下面这个例子用来区分切片和列表关联的区别:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print('Original fruits = '+str(fruits)) fruits_1 = fruits[:] #复制列表 fruits_2 = fruits #列表fruits和fruits_2相关联 fruits.append('mango') fruits_2.append('watermelon') print('After append fruits = '+str(fruits)) print('fruits_1 = '+str(fruits_1)) print('fruits_2 = '+str(fruits_2))
输出结果如下图所示:
由输出结果可以看到,复制列表和关联列表的区别还蛮大的,复制列表之后,原列表再更改也和已经复制到的列表无关,但是两个列表关联后,无论哪个列表变动都会同步到另一个列表,因为两个变量都指向了同一个列表。
九、元组
列表非常适合用于存储在程序运行期间可能变化的数据集,然而,有时候我们需要创建一系列不可修改的元素,元组可以满足这种需求。
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。元组和列表类似又有区别,它使用的是圆括号而不是方括号来标识,定义元组后,就可以使用索引像访问列表元素一样来访问元组。
在Python中,不能给元组的元素赋值,修改元组的操作是被禁止的,但可以给存储元组的变量赋值。
下面是元组应用的例子:
group = (100, 50) print('group = '+str(group)) print('打印元组内元素:') print(group[0]) print(group[1]) #打印元组中的各个元素 print('遍历元组:') for element in group: #遍历元组 print(element) print('修改元组变量后输出:') group = (200, 100) #修改元组变量,给元组赋新值 for element in group: print(element)
输出结果如下图所示:
总结:
以上就是Python中列表及其操作的所有内容了,文中提到的一些方法都是对列表的简单操作,应当多加练习牢记,并在之后的编程中熟练使用。