【Python3.7学习笔记】四、列表
学习笔记目录
【Python3.7学习笔记】一、环境搭建
【Python3.7学习笔记】二、第一个python程序
【Python3.7学习笔记】三、变量和简单数据类型
【Python3.7学习笔记】四、列表
【Python3.7学习笔记】五、字典
目录
列表
列表由一系列按特定顺序排列的元素组成。python使用[]来表示列表,并用逗号来分隔其元素。例如:
# 自行车列表
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
输出结果:
[‘trek’, ‘cannondale’, ‘redline’, ‘specialized’]
访问列表元素
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python解释器即可。将索引号放入方括号中。各式:列表名[索引],例如:
# 自行车列表
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
输出结果:
trek
列表索引
- python,索引从0开始
# 自行车列表
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
# 访问列表元素,使用下标访问,索引从0开始而不是1开始
print(bicycles[0])
print(bicycles[1])
print(bicycles[3])
输出结果:
trek
cannondale
specialized
- 特殊语法
python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让python返回最后一个列表元素,这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引,例如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,以此类推
# 最后的元素
print(bicycles[-1])
# 倒数第二个元素
print(bicycles[-2])
# 倒数第三个元素
print(bicycles[-3])
修改列表元素
修改列表元素的语法和访问列表元素的语法类似。各式:列表名[索引]=新值,如:
# 修改元素
motocycles = ['honda', 'yamaha', 'suzuki']
print(motocycles)
motocycles[0] = 'ducati'
print(motocycles)
输出结果:
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']
添加元素到列表
使用append()在列表末尾添加元素
在列表中添加新元素时,最简单的方式是将元素添加到列表末尾。例如:
# 1、使用append()方法在列表末尾增加一个元素
motocycles = ['honda', 'yamaha', 'suzuki']
motocycles.append('ducati')
print(motocycles)
输出结果:
['honda', 'yamaha', 'suzuki', 'ducati']
append()能动态的创建列表,如下:先创建一个空列表,然后添加元素。
motocycles = []
motocycles.append('honda')
motocycles.append('yamaha')
motocycles.append('suzuki')
motocycles.append('ducati')
print(motocycles)
输出结果:
['honda', 'yamaha', 'suzuki', 'ducati']
使用insert()在列表的任何位置添加元素
使用insert()方法可在列表的任何位置添加元素。只需要指定新元素的索引和值。
# 2、使用方法insert()可在列表的任何位置添加新元素。
# 为此,你需要指定新元素的索引和值
motocycles = ['honda', 'yamaha', 'suzuki']
motocycles.insert(0,'ducati')
print(motocycles)
输出结果:
[ 'ducati','honda', 'yamaha', 'suzuki']
从列表删除元素
使用del()删除元素
使用del()函数删除元素,只需提供元素在列表中的位置索引即可,如:
# 1、使用del语句删除元素,
# 如果知道要删除的元素在列表中的位置,
# 可使用del语句
motocycles = ['honda', 'yamaha', 'suzuki']
del motocycles[0]
print(motocycles)
输出结果:
[ 'yamaha', 'suzuki']
使用pop()删除元素
方法pop()可删除列表末尾的元素,并能继续使用它的值,类似与,弹出栈顶元素,如:
# 2、使用pop()删除元素,
# 方法pop()可删除列表末尾的元素,
# 并让你能够接着使用它
motocycles = ['honda', 'yamaha', 'suzuki']
print(motocycles)
popped_motocycle = motocycles.pop()
print(motocycles)
print(popped_motocycle)
输出结果:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki
使用pop()删除任何位置的元素
值需要提供删除元素的索引即可,如:
# 3、弹出列表中任何位置的元素
motocycles = ['honda', 'yamaha', 'suzuki']
print("11")
print(motocycles)
first_owned = motocycles.pop(1)
print(motocycles)
second_owned = motocycles.pop(0)
print("22")
print(motocycles)
print("first_owned=="+first_owned)
print("second_owned=="+second_owned)
输出结果:
11
['honda', 'yamaha', 'suzuki']
['honda', 'suzuki']
22
['suzuki']
first_owned==yamaha
second_owned==honda
当你使用pop()时,被弹出的元素就不在列表中了,如果你不能确定该使用del()还是pop(),判断标准:
- 如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del()
- 如果你要做删除元素后还能继续使用它,就使用pop()
使用remove()根据值删除元素
有时候,你不知道要从列表中删除的值所处位置。如果你只知道要删除元素的值,可使用方法remove(),如:
# 4、根据值删除元素
# 如果你不知道要从列表中删除的值所处的位置。
# 如果你只知道要删除的元素的值,
# 可使用方法remove()
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motocycles)
motocycles.remove('ducati')
print(motocycles)
输出结果:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
使用remove()从列表中删除元素时,也可接着使用它的值,如:
# 使用remove()从列表中删除元素时,也可接着使用它的值
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motocycles)
too_expensive = 'ducati'
motocycles.remove(too_expensive)
print(motocycles)
print("\nA "+too_expensive+" is too expensive for me!")
输出结果:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
A ducati is too expensive for me!
注意:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。
使用sort()对列表进行永久性排序
假设你有一个汽车列表,并要让其中的汽车按字母顺序排列,如:
# 方法sort()对列表进行排序
# 假设你有一个汽车列表,并要让其中的汽车按字母顺序排列。
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
输出结果:
['audi', 'bmw', 'subaru', 'toyota']
可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数reverse=True 如:
# 可以按与字母顺序相反的顺序排列列表元素,
# 为此,只需向sort()方法传递参数reverse=True
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
输出结果:
['toyota', 'subaru', 'bmw', 'audi']
使用sorted()对列表进行临时性排序
使用函数sorted()对列表进行临时排序,不影响列表原始顺序,如:
# 使用函数sorted()对列表进行临时排序
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
print(sorted(cars))
print(cars)
输出结果:
['bmw', 'audi', 'toyota', 'subaru']
['audi', 'bmw', 'subaru', 'toyota']
['bmw', 'audi', 'toyota', 'subaru']
使用reverse()反转列表
要反转列表元素的排列顺序,可使用方法reverse(),如:
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
输出结果:
['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']
注意:reverse()不是指按与字母顺序相反的顺序排列列表原始,而只是反转列表元素的排列顺序,方法reverse()永久性的修改列表元素的排列顺序,但是可随时恢复到原来的排列顺序,为此再次调reverse()方法即可。
使用len()计算列表长度
使用len()计算列表长度,如:
# 列表的长度
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print("cars列表的长度:"+str(len(cars)))
输出结果:
cars列表的长度:4
遍历列表
循环列表
# 遍历列表
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
for motocycle in motocycles:
print(motocycle)
输出结果:
honda
yamaha
suzuki
ducati
避免缩进错误
python根据缩进来判断代码行与前一个代码行的关系。通过缩进让代码更易读;缩进使得代码整洁而结构清晰。
忘记缩进
如果忘记缩进,python解释器会提供一个traceback信息,提示缩进
忘记缩进额外的代码行
忘记缩进会导致逻辑错误
不必要的缩进
如果你不小心缩进了不需要缩进的代码,python解释器会提示traceback信息
遗漏了冒号
for语句末尾的冒号告知python,下一行是循环的第一行
数值列表
使用函数range()
python函数range()能生成一系列的数字。
for value in range(1,5):
print(value)
输出结果:
1
2
3
4
使用range()函数创建数字列表
函数list()将range()的结果直接转换为列表
numbers = list(range(1,5))
print(numbers)
输出结果:
[1, 2, 3, 4]
对数字列表进行统计计算
numbers = list(range(1,6))
print(numbers)
print(max(numbers))
print(min(numbers))
print(sum(numbers))
输出结果:
[1, 2, 3, 4, 5]
5
1
15
列表解析
numbers = list(range(1,11))
print(numbers)
squares = [value**2 for value in range(1,11)]
print(squares)
输出结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
##使用列表的一部分
切片
要创建切片,可指定第一个元素的索引和最后一个元素的索引+1
# 要创建切片,可指定第一个元素的索引和最后一个元素的索引+1
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
# 包含0,1,2索引元素
print(motocycles[0:3])
# 包含1,2索引元素
print(motocycles[1:3])
# 包含0,1,2,3索引元素
print(motocycles[0:4])
# 包含1,2,3索引元素
print(motocycles[1:4])
# 包含0,1,2,3索引元素
print(motocycles[:4])
# 包含0,1,2索引元素
print(motocycles[:3])
# 索引从2开始元素
print(motocycles[2:])
# 包含倒数1元素
print(motocycles[-1:])
# 包含倒数2个元素
print(motocycles[-2:])
# 包含倒数3个元素
print(motocycles[-3:])
输出结果:
['honda', 'yamaha', 'suzuki']
['yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
['yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
['suzuki', 'ducati']
['ducati']
['suzuki', 'ducati']
['yamaha', 'suzuki', 'ducati']
遍历切片
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
for motocycle in motocycles[:4]:
print(motocycle)
输出结果:
honda
yamaha
suzuki
ducati
复制列表
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
# 使用切片拷贝整个列表
motocycles_copy = motocycles[:]
# 使用copy方法拷贝列表
motocycles_copy2 = motocycles.copy()
print(motocycles_copy)
print(motocycles_copy2)
输出结果:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki', 'ducati']
元组
列表适合于存储在程序运行期间可能变化的数据集。列表是可修改的。
python将不能修改的列表称为元组,使用圆括号括起来。可以使用索引访问值
定义元组
dimension = (200,50)
print(dimension[0])
print(dimension[1])
输出结果:
200
50
遍历元组
dimensions = (200,50)
for dimension in dimensions:
print(dimension)
输出结果:
200
50
修改元组变量
dimensions = (200,50)
print("old dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (100,100)
print("new dimensions:")
for dimension in dimensions:
print(dimension)
输出结果:
old dimensions:
200
50
new dimensions:
100
100
不能修改元组中得值,但是可以给元组变量重新赋值
欢迎大家一起讨论交流学习
我的 github 期待你的关注