Python学习之路2-列表介绍
《Python编程:从入门到实践》笔记。
本章主要介绍列表的基础与简单操作。
1. 列表(List)是什么
列表由一系列按特定顺序排列的元素组成。
类似于C/C++, Java中的数组,但和他们不同的是,Python列表中的元素可以是不同类型。
Python中用中括号[]
来表示列表,并用逗号分隔其中的元素。
# 代码: bicycles = ['trek', 'cannondale', 'redline', 'specialized'] print(bicycles) # 结果: # python打印了该列表的内部表示 ['trek', 'cannondale', 'redline', 'specialized']
1.1 访问与使用列表中的元素
大多数编程语言中,索引都是从0开始的,而不是从1开始的。以下代码是输出上述列表中的第1个元素:
# 代码: print(bicycles[0]) print(bicycles[0].title()) message = "My first bicycle was a " + bicycles[0].title() + "." print(message) # 结果: trek Trek My first bicycle was a Trek.
Python还支持索引为负数,表示从后往前数,“-1”表示倒数第1个元素,例如:
# 代码: print(bicycles[-1]) # 结果: specialized
但是,不管索引是正数还是负数,都要注意索引越界问题!
2. 修改、添加和删除元素
2.1修改列表元素
# 代码: # 修改第一个元素 motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) motorcycles[0] = "ducati" print(motorcycles) # 结果: ['honda', 'yamaha', 'suzuki'] ['ducati', 'yamaha', 'suzuki']
2.2 添加元素
在列表末尾添加元素:
# 代码: motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) motorcycles.append("ducati") print(motorcycles) # 结果: ['honda', 'yamaha', 'suzuki'] ['honda', 'yamaha', 'suzuki', 'ducati']
也可以动态建立motorcycles
列表:
# 代码: motorcycles = [] # 此句很重要!表示声明一个列表! motorcycles.append('honda') motorcycles.append('yamaha') motorcycles.append('suzuki') print(motorcycles) # 结果: ['honda', 'yamaha', 'suzuki']
在列表中插入元素:
# 代码: motorcycles = ['honda', 'yamaha', 'suzuki'] motorcycles.insert(0, 'ducati') print(motorcycles) motorcycles.insert(4, 'dongfeng') # 在最后插入一个元素,相当于motorcycles.append('dongfeng') print(motorcycles) # 结果: ['ducati', 'honda', 'yamaha', 'suzuki'] ['ducati', 'honda', 'yamaha', 'suzuki', 'dongfeng']
2.3删除元素
使用 del
语句删除元素:知道元素在列表中的位置
# 代码: motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) del motorcycles[0] print(motorcycles) # 结果: ['honda', 'yamaha', 'suzuki'] ['yamaha', 'suzuki']
del
可删除任意位置的列表元素,前提是知道其索引
使用 pop()
方法删除元素:会返回被删除的元素,当对被删除的元素还有后续操作时使用此方法。
默认删除列表最后一个元素,当传入参数(作为索引)时,删除指定位置的元素(但请注意越界问题):
# 代码: motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) last_owned = motorcycles.pop() # 默认 print("The last motorcycle I owned was a " + last_owned.title() + ".") print(motorcycles) motorcycles.pop(1) # 传入参数 print(motorcycles) # 结果: ['honda', 'yamaha', 'suzuki'] The last motorcycle I owned was a Suzuki. ['honda', 'yamaha'] ['honda']
所以,pop()
方法也可以删除任意位置的元素
根据值删除元素的 remove()
方法:当不知道元素索引,但知道元素值时
# 代码: motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati'] print(motorcycles) motorcycles.remove('ducati') print(motorcycles) # 结果: ['honda', 'yamaha', 'suzuki', 'ducati'] ['honda', 'yamaha', 'suzuki']
注意,如果列表中有多个相同的值,romve()
方法只删除第一个
3. 组织列表
3.1 排序
sort()
方法对列表永久排序(原地操作):
# 代码: cars = ['bmw', 'audi', 'toyota', 'subaru'] cars.sort() print(cars) # 结果: ['audi', 'bmw', 'subaru', 'toyota']
如果不想修改原列表,则应使用以下方法。
使用 sorted()
函数对列表进行临时排序:
# 代码: cars = ['bmw', 'audi', 'toyota', 'subaru'] print("Here is the original list:") print(cars) print("\nHere is ths sorted list:") print(sorted(cars)) print("\nHere is the original list again:") print(cars) # 结果: Here is the original list: ['bmw', 'audi', 'toyota', 'subaru'] Here is ths sorted list: ['audi', 'bmw', 'subaru', 'toyota'] Here is the original list again: ['bmw', 'audi', 'toyota', 'subaru']
不管是sort()
方法还是 sorted()
函数,如果想反向排序,只需要传入关键字参数reverse=True
:
cars.sort(reverse=True) sorted(cars, reverse=True)
以上两种排序是按ASCII
码进行的排序,如果想自定义排序,需要传入自定义比较函数。
反向打印列表:reverse()
方法,也是原地操作!并且这只是反向打印列表的实现方法之一
# 代码: cars = ['bmw', 'audi', 'toyota', 'subaru'] print(cars) cars.reverse() # 注意!并没有排序后再反向! print(cars) # 结果: ['bmw', 'audi', 'toyota', 'subaru'] ['subaru', 'toyota', 'audi', 'bmw']
3.2 确定列表长度
使用 len()
函数获得列表长度:
# 代码: cars = ['bmw', 'audi', 'toyota', 'subaru'] print(len(cars)) # 结果: 4
迎大家关注我的微信公众号"代码港" & 个人网站 www.vpointer.net ~