列表简介
1.1 列表是什么
列表有一系列特定顺序排列的元素组成(通常给列表起名字用复数名称,如letters)
在python中,列表用[]表示,用逗号来分隔其中的元素
1.1.1 访问列表元素
列表是有序集合,我们访问列表时,只需将该元素的位置索引告诉python即可
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[0].title())
Trek
1.1.2 索引是从0而不是1开始的
在python中,第一个列表元素的索引位0,而不是1,当然,大多数编程语言也是如此
在python中还有一个特殊的索引:负索引
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[-1].title())
print(bicycles[-2].title())
Specialized
Redline
-1,-2分别返回了倒数第一个和倒数第二个元素
1.1.3 使用列表中的各个值
跟使用变量一样使用该值,指定索引提取该值即可
2. 修改,添加和删除元素
2.1 修改列表元素
修改列表元素与访问列表元素类似,要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[0].title()) #旧值
bicycles[0] = '比亚迪'
print(bicycles[0].title()) #新值
Trek
比亚迪
2.2在列表中添加元素
①再列表末尾添加元素
方法append()可以再列表末尾添加新元素
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)
bicycles.append('ducati') #添加到了末尾
print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
['trek', 'cannondale', 'redline', 'specialized', 'ducati']
②在列表中插入元素
方法insert()可以在列表的任何位置添加新元素,但也要指定新元素的索引和值
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)
bicycles.insert(0,'ducati')
print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
['ducati', 'trek', 'cannondale', 'redline', 'specialized']
'ducati’被插入到了列表索引0的位置,其他元素都向后移动一个位置
2.3在列表中删除元素
① 使用del语句删除元素
如果知道要删除元素的位置,可以使用del语句
bicycles = ['trek','cannondale','redline','specialized']
del bicycles[0]
print(bicycles)
['cannondale', 'redline', 'specialized'] #删除了'trek'
注意:当用del语句将值从列表中删除以后,以后就无法访问这个值了
②使用方法pop()删除元素
方法pop()可删除列表末尾的元素,但是删除后仍然可以访问该元素
bicycles = ['trek','cannondale','redline','specialized']
poped_motorcyle = bicycles.pop()
print(bicycles)
print(poped_motorcyle)
['trek', 'cannondale', 'redline'] #确实把'specialized'删除了
specialized #因为使用了变量poped_motorcyle存储了起来,所以仍然可以访问
③弹出列表中任意位置处的元素
仍然可以使用pop()方法来删除元素,但是要指定索引位置
bicycles = ['trek','cannondale','redline','specialized']
first_owned = bicycles.pop(0)
print(bicycles)
print('The first motorcycle I owned was a '+first_owned+'.')
['cannondale', 'redline', 'specialized']
The first motorcycle I owned was a trek. #弹出的就是列表中的第一个元素
判断:使用del语句还是pop()方法
区别:del语句删除了列表中的元素后,后面是不能使用的
pop()当弹出了(删除)了该元素之后,可以存储到变量中,后面继续使用
④根据值删除元素
当有时候我们只知道要删除的是哪个值,但是并不知道删除的值的索引,可以使用remove()方法
remove()方法跟pop()方法一样,删除了列表中的元素后,我们还是可以将删除的元素存储在变量中,后面可以继续使用
bicycles = ['trek','cannondale','redline','specialized']
too_expensive = 'redline'
bicycles.remove(too_expensive)
print(bicycles)
print(too_expensive.title()+' is too expensive for me')
['trek', 'cannondale', 'specialized'] #已经删除了'Redline'
Redline is too expensive for me
2.3 组织列表
2.3.1 使用sort()对列表进行永久性排序
cars = ['bmw','audi','toyota','subaru']
cars.sort()
print(cars)
['audi', 'bmw', 'subaru', 'toyota'] #按字母顺序进行了排序
方法sort()永久性的修改了列表元素的排列顺序
当我们在sort()方法中传递参数reverse=true时,可以对列表中的元素进行逆向排序
cars = ['bmw','audi','toyota','subaru']
cars.sort(reverse=True)
print(cars)
['toyota', 'subaru', 'bmw', 'audi'] #对字母进行了逆向排序
2.3.2 使用sorted()对列表进行临时排序
函数sorted()能让你用特定的顺序排列显示元素,同时不影响原始排列顺序
cars = ['bmw','audi','toyota','subaru']
print('Here is original list:')
print(cars)
print('\nHere is the sorted list:')
print(sorted(cars))
print('\nHere is original list again:')
print(cars)
Here is original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
Here is original list again:
['bmw', 'audi', 'toyota', 'subaru']
调用函数sorted()方法之后,原始的cars列表原始排列顺序并没有变
如果想要列表排列顺序按照逆序,可以
print(sorted(cars,reverse=True))
2.3.3 倒着打印列表
cars = ['bmw','audi','toyota','subaru']
print(cars)
cars.reverse()
print(cars)
['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']
reverse()方法是反转列表中的元素排列顺序,reverse()方法永久性地修改列表中元素的排列顺序
永久但并不永久
只需要在调用一次reverse()方法就可以回到原始的排列顺序
2.3.4 确定列表的长度
使用len()方法可以快速知道列表的长度
cars = ['bmw','audi','toyota','subaru']
print(len(cars))
4
2.4 使用列表时避免索引错误
经常遇到的一种情况就是索引越界
ports = ['beijing','shanghai','xinjiang','changan','chongqing']
print(ports[5])
Traceback (most recent call last):
File "D:\Python\Python-project\birthday.py", line 2, in <module>
print(ports[5])
~~~~~^^^
IndexError: list index out of range
发生索引越界的时候,可以将列表长度打印出来,看时候自己索引判断错误