这篇文章即《Python的变量和简单数据类型》之后的总结文章(Eric Matthes 《Python编程从入门到实践》第三章)
什么是列表
列表同样是每一个编程语言都需要的数据结构,它可以非常有效的帮助程序员我们存储一组有关联的数据。学习下来,相比Java的列表,Python的使用让我觉得更加方便,有点贴近JS。
在 Python 中,利用[]
来表示列表,例如:
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
这样一组跑车车牌的数据便是列表,它并不需要像 Java 那样定义类型再创建数组
访问元素
既然是集合,我们就可以访问集合中的每个元素,这时我们就会用到索引
这个概念。就像数据库,索引往往可以快速找到指定位置的数据,而 Python 也跟其他编程语言一样索引从0开始
打印法拉利车牌名
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
print(sports_cars[2])
上面的列表中法拉利是从左往右数第三个,而下标从0开始,因此下标为2的元素sports_cars[2]
注意如果列表是[]
空的,去获取的话就会报错,包括获取的索引值越界
有意思的是,Python不仅能从左往右正着数,还能倒着数
以 lamborghini
为 0, 那么 mclaren
就是 -1 即 ferrari
就是 -2 的索引
因此
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
print(sports_cars[-2])
同样可以取出 ferrari
因为 sports_cars[-2]
这样一条代码其本省就是 'ferrari'
字符串,所以可以直接使用字符串的函数,例如 print(sports_cars[-2].title())
就会输出 Ferrari
修改,添加,删除元素
修改列表元素
直接上代码,这样更好理解,这里将 ‘porsche’ 保时捷 修改为 ‘koenigsegg’ 柯尼塞格
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
sports_cars[1] = 'koenigsegg'
print(sports_cars)
输出:
['lamborghini', 'koenigsegg', 'ferrari', 'mclaren']
添加元素
末尾添加
列表添加元素有多种方案,其中末尾添加使用的是 append()
函数方法
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
sports_cars.append('pagani')
以上操作便能在列表的末尾添加帕加尼 pagani
列表中插入
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
sports_cars.insert(1, 'pagani')
如上述代码所见,这一次我们通过insert()
来插入帕加尼,insert
会用到两个参数,索引和值,这样便能在兰博基尼 lamborghini 后面插入 pagani
删除元素
删除元素同样也有多种方法
del
语句删除
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
del sports_cars[0]
上述代码便能删除列表中的第一个元素兰博基尼 lamborghini
要注意这样的操作是在原列表中进行,也就是删掉了便无法再访问到删除的元素
pop()
pop 即弹出,上一个语句del
在删除后就无法访问删除的元素,但pop()
可以用变量接收弹出的元素
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
popped_mclaren = sports_cars.pop()
此时原列表会弹出最后一个元素,即迈凯轮 mclaren,原列表只剩下三个元素,然后 mclaren 会被 popped_mclaren
变量接收pop
不仅仅可以弹出最后一个元素,它也可以指定列表当中任意一个索引弹出,例如我想弹出法拉利 ferrari
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
popped_ferrari = sports_cars.pop(2)
根据内容值删除元素
列表还可以通过remove()
来删除
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
sports_cars.remove('porsche')
要注意,如果有两个或更多个相同的内容值,remove()
只会删除第一个指定的值
简单组织排序列表
sort()
对列表永久排序
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
sports_cars.sort()
print(sports_cars)
['ferrari', 'lamborghini', 'mclaren', 'porsche']
Python 列表的 sort()
方法会让该列表的当中的元素按英文的首字母排序,当然不同内容,例如整数列表就有整数列表的排序规则即正序等
sort()
会永久更改列表的顺序,也就是没法复原
sort()
也可以传入 reverse=True
这样的参数进行倒续排序
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
sports_cars.sort(reverse=True)
print(sports_cars)
['porsche', 'mclaren', 'lamborghini', 'ferrari']
sorted()
临时排序
所谓临时,就是它将不再是永久更改原列表
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
print(sorted(sports_cars))
print(sports_cars)
['ferrari', 'lamborghini', 'mclaren', 'porsche']
['lamborghini', 'porsche', 'ferrari', 'mclaren']
可以看到,原列表并没有被修改
sorted()
也同样支持传递 reverse=True
的参数
倒着打印列表
我们在上面说到过通过传参倒续排序,而Python也同样支持将原列表倒续,但方法是永久性修改原列表
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
sports_cars.reverse()
print(sports_cars)
['mclaren', 'ferrari', 'porsche', 'lamborghini']
确定列表长度
最后再来告诉大家获取列表长度的方法
sports_cars = ['lamborghini', 'porsche', 'ferrari', 'mclaren']
print(len(sports_cars))
这样就能输出列表的长度 4