什么是列表
列表是Python中非常重要的数据类型,通常作为函数的返回值。由一组元素组成,列表可以实现添加、删除和查找操作,元素值可以被修改
由一系列按照特定的顺序排列起来的元素所组成列表
#普通的变量定义形式
tom = "Tom"
jack = "Jack"
john = "John"
pet1 = "cat"
pet2 = "dog"
pet3 = "bird"
#定义列表,语法格式
name = ['Tom','Jack','John']
pet = ['cat','dog','bird'] #相比一个一个来定义会比较简洁,方便
#打印列表
print(name)
print(pet)
['Tom', 'Jack', 'John']
['cat', 'dog', 'bird']
用索引访问列表元素
#通过索引读取列表中的元素,索引从0开始,-1代表最后一个
print(name[0])
print(pet[2])
Tom
bird #这些数字就是列表中排列的顺序,是从0开始,按照一定的顺序,以此类推
#-1代表元素的最后一个,-2代表倒数第二个,以此类推
print(name[-1])
print(pet[-2])
John
dog
列表的基本操作
修改:
通过索引获取元素,进行修改
添加:
append(元素):在列表末尾添加
insert(索引,元素):在列表指定位置插入
删除:
del:根据元素的索引删除元素,被删除的元素不可以在进行访问
pop():删除列表末尾的元素
pop(索引):弹出指定位置的元素,被删除的元素还能继续使用
remove(value):根据元素的值进行删除
排序
sorted(列表):临时排序
sort():永久排序
sort(reverse=True):倒序排序
len():列表长度
修改列表的元素
#通过索引获取元素,进行修改
name[1] = 'San'
print(name)
['Tom', 'San', 'John'] #之前定义的是Jack,现在修改成了San
向列表中添加元素
#在列表末尾添加新元素
name.append('Bob')
print(name)
['Tom', 'San', 'John', 'Bob']
#在列表指定位置添加新元素
print(pet)
pet.insert(0,'penguin')
print(pet)
['cat', 'dog', 'bird']
['penguin', 'cat', 'dog', 'bird']
pet.insert(-2,'pig')
print(pet)
['penguin', 'cat', 'pig', 'dog', 'bird']
删除列表中的元素
#根据元素的索引删除元素
print(pet)
del pet[0]
print(pet)
['penguin', 'cat', 'pig', 'dog', 'bird']
['cat', 'pig', 'dog', 'bird'] #使用del删除的元素不可以进行访问
#删除列表末尾的元素
print(pet)
new_pet = pet.pop() #不加参数在表最后一个
print(new_pet)
print(pet)
['cat', 'pig', 'dog', 'bird']
bird
['cat', 'pig', 'dog']
#弹出指定位置的元素
print(pet)
pet.pop(2)
print(pet)
['cat', 'pig', 'dog']
['cat', 'pig']
#访问刚才删除的值
print(new_pet)
bird
#根据元素的值进行删除
print(pet)
pet.remove('cat')
print(pet)
['cat', 'pig']
['pig']
#删除一个不存在值
pet.remove('d')
print(pet)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-16-086f691d7e32> in <module>
1 #删除一个不存在值
----> 2 pet.remove('d')
3 print(pet)
ValueError: list.remove(x): x not in list
#删除的值必须是真实存在的,不然就会报错
列表排序
按照26个字母的顺序进行排序
#定义列表:汽车的品牌
print('原始顺序:')
brand = ['audi','bmw','toyota','byd','luhu']
print(brand)
#临时排序
print('临时排序:')
print(sorted(brand))
print(brand)
#永久排序
print('永久排序:')
brand.sort()
print(brand)
#倒序排序
print('倒序排序:')
brand.sort(reverse=True)
print(brand)
原始顺序:
['audi', 'bmw', 'toyota', 'byd', 'luhu']
临时排序:
['audi', 'bmw', 'byd', 'luhu', 'toyota']
['audi', 'bmw', 'toyota', 'byd', 'luhu'] #排完序之后就又变会原来的顺序了
永久排序:
['audi', 'bmw', 'byd', 'luhu', 'toyota']
倒序排序:
['toyota', 'luhu', 'byd', 'bmw', 'audi']
获取列表的长度
#获取列表的长度
print(len(brand))
5
常见错误:索引越界
比如说列表长度为5,也就是说索引最多到4
#正确索引
print(brand[4])
audi
#错误索引,索引越界
print(brand[5])
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-10-173eb23c555f> in <module>
----> 1 print(brand[5])
IndexError: list index out of range #索引错误,列表索引超出范围
练习
列表练习(一)
- 定义一个列表,存储5个科目名称
- 新增科目(末尾新增&指定位置新增)
- 修改科目
- 删除科目,并且在打印科目列表的时候,能够显示删除了哪个科目
- 删除指定名称的科目
- 删除第2个科目
#1、定义一个列表,存储5个科目名称
print('定义列表:')
subjects = ['语文','数学','英语','物理','历史']
print(subjects)
#2、新增科目(末尾新增&指定位置新增)
#末尾新增
print('末尾新增:')
print(subjects)
subjects.append('化学')
print(subjects)
#指定位置新增
print('指定位置新增:')
print(subjects)
subjects.insert(0,'生物')
print(subjects)
#3、修改科目
print('修改科目:')
print(subjects)
subjects[1] = '政治'
print(subjects)
#4、删除科目,并且在打印科目列表的时候,能够显示产出了哪个科目
print('删除科目,并且显示删除了哪个科目:')
print(subjects)
new_subjects = subjects.pop()
print(new_subjects)
print(subjects)
#5、删除指定名称的科目
print('删除指定名称的科目:')
print(subjects)
subjects.remove('物理')
print(subjects)
#6、删除第二个科目
print('删除第二个科目:')
print(subjects)
subjects.pop(1)
print(subjects)
---------------------------------------------------------------------------
定义列表:
['语文', '数学', '英语', '物理', '历史']
末尾新增:
['语文', '数学', '英语', '物理', '历史']
['语文', '数学', '英语', '物理', '历史', '化学']
指定位置新增:
['语文', '数学', '英语', '物理', '历史', '化学']
['生物', '语文', '数学', '英语', '物理', '历史', '化学']
修改科目:
['生物', '语文', '数学', '英语', '物理', '历史', '化学']
['生物', '政治', '数学', '英语', '物理', '历史', '化学']
删除科目,并且显示删除了哪个科目:
['生物', '政治', '数学', '英语', '物理', '历史', '化学']
化学
['生物', '政治', '数学', '英语', '物理', '历史']
删除指定名称的科目:
['生物', '政治', '数学', '英语', '物理', '历史']
['生物', '政治', '数学', '英语', '历史']
删除第二个科目:
['生物', '政治', '数学', '英语', '历史']
['生物', '数学', '英语', '历史']
列表练习(二)
- 将5个城市的名称存储到列表中,并且保证名称不是按照字母顺序排列的
- 打印出原始的城市列表信息
- 使用sorted()方法按字母顺序打印城市列表,但是不要修改列表元素的顺序
- 打印该列表,确认城市名称排列顺序没有被修改
- 使用sort()方法排列城市名称,确保永久性修改排列顺序
#1、将5个城市的名称存储带列表中,并且保证名称不是按照字母顺序排列的
print('定义城市列表:')
city = ['zhengzhou','shanghai','beijing','guangzhou','luoyang']
#2、打印出来原始的城市列表信息
print('原始列表信息:')
print(city)
#3、使用sorted()方法按字母顺序打印城市列表,但不要修改列表元素的顺序
print('sorted()方法排序--临时排序:')
print(city)
print(sorted(city))
#4、打印该列表,确认城市名称排序没有被修改
print('验证城市名称排序没有被修改:')
print(city)
#5、使用sort()方法排序城市名称,确保永久性排列顺序
print('使用sort()排序--永久排序:')
city.sort()
print(city)
---------------------------------------------------------------------------
定义城市列表:
原始列表信息:
['zhengzhou', 'shanghai', 'beijing', 'guangzhou', 'luoyang']
sorted()方法排序--临时排序:
['zhengzhou', 'shanghai', 'beijing', 'guangzhou', 'luoyang']
['beijing', 'guangzhou', 'luoyang', 'shanghai', 'zhengzhou']
验证城市名称排序没有被修改:
['zhengzhou', 'shanghai', 'beijing', 'guangzhou', 'luoyang']
使用sort()排序--永久排序:
['beijing', 'guangzhou', 'luoyang', 'shanghai', 'zhengzhou']