今天我们详细讲解Python 中的列表。
前言 序列(sequence)
Python有6个序列的内置类型,但最常见的是列表和元组。今天我们就来讲讲列表。
列表简介(list)
列表是Python中内置有序可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、字典以及其他自定义类型的对象。
列表的使用:
1. 列表的创建
2. 操作列表中的数据
列表中的对象都会按照插入的顺序存储到列表中,第一个插入的对象保存到第一个位置,第二个保存到第二个位置。我们可以通过索引(index)来获取列表中的元素。索引是元素在列表中的位置,列表中的每一个元素都有一个索引。索引是从0开始的整数,列表第一个位置索引为0,第二个位置索引为1,第三个位置索引为2,以此类推。
下面我们详细讲解有关列表的操作。
1. 创建列表
1). 创建列表,通过[]来创建列表
my_list = []
print(my_list,type(my_list))
运行结果:
2). 创建一个包含有5个元素的列表
当向列表中添加多个元素时,多个元素之间使用,隔开
my_list = [,,,,]
3). 获取列表中的第1,3 5 个元素
my_list = [10,20,30,40,50]
print(my_list[0], my_list[2], my_list[4])
运行结果:
4). 通过len()函数获取列表的长度,也就是列表中元素的个数。
my_list = [10,20,30,40,50]
print(my_list[0], my_list[2], my_list[4])
print(f'my_list\'s length is {len(my_list)}')
运行结果:
2. 列表切片读取列表内容(切片指从现有列表中,获取一个子列表)
通过切片来获取指定的元素
语法:列表[起始:结束]
通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
做切片操作时,总会返回一个新的列表,不会影响原来的列表
起始和结束位置的索引都可以省略不写
如果省略结束位置,则会一直截取到最后
如果省略起始位置,则会从第一个元素开始截取
如果起始位置和结束位置全部省略,则相当于创建了一个列表的副本
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank']
print(employees[:]) #运行结果:['Jack', 'Kevin', 'Ray', 'Bin', 'Eva', 'Summer', 'Frank']
print(employees[:]) #运行结果:['Yuki', 'Jack', 'Kevin', 'Ray']
print(employees[:]) #运行结果:['Yuki', 'Jack', 'Kevin', 'Ray', 'Bin', 'Eva', 'Summer', 'Frank']
print(employees[:]) #运行结果:['Jack', 'Kevin'] 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
运行结果:
语法:列表[起始:结束:步长]
步长表示,每次获取元素的间隔,默认值是1
步长不能是0,但是可以是负数
如果是负数,则会从列表的后部向前边取元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank']
print(employees[::]) #运行结果:['Yuki', 'Kevin', 'Bin']
print(employees[::-1]) #相当于将整个列表翻转显示。运行结果['Frank', 'Summer', 'Eva', 'Bin', 'Ray', 'Kevin', 'Jack', 'Yuki']
print(employees[::-2]) #运行结果:['Frank', 'Eva', 'Ray', 'Jack']
运行结果:
补充:
列表的索引可以是负数。如果索引是负数,则从后向前获取元素,-1表示倒数第一个,-2表示倒数第二个以此类推。
3. 列表的通用操作
my_list = [1,2,3] + [4,5,6]
print(my_list)
运行结果:
my_list = [1,2,3] * 5
print(my_list)
运行结果:
in用来检查指定元素是否存在于列表中
如果存在,返回True,否则返回False
not in用来检查指定元素是否不在列表中
如果不在,返回True,否则返回False
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank']
print('Yuki' in employees) #True
print('Cendy' not in employees) ##True
min() 获取列表中的最小值
max() 获取列表中的最大值
arr = [,,,,,]
print(min(arr) , max(arr))
运行结果:
两个方法(method)index() 和 count()
方法和函数基本上是一样,只不过方法必须通过对象.方法() 的形式调用
s.index() 获取指定元素在列表中的第一次出现时的索引
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank']
print(employees.index('Jack'))
运行结果:
index()的第二个参数,表示查找的起始位置,第三个参数,表示查找的结束位置
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print(employees.index('Jack'))
print(employees.index('Jack',2))
运行结果:
s.count() 统计指定元素在列表中出现的次数
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print(employees.count('Jack')) #'Jack'在employees列表中出现了两次
运行结果:
4. 修改列表中的元素
方法一:直接通过索引来修改元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees[0] = 'Mary'
employees[1] = 'Bunpoat'
print('修改后:',employees)
运行结果:
方法二:通过del来删除元素
del employees[1] 删除索引为1的元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
del employees[]
运行结果:
方法三:通过切片来修改列表
在给切片进行赋值时,只能使用序列
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees[0:2] = ['Mary','Bunpoat'] #修改employees[0]为Mary,employees[1]为Bunpoat
print('修改后:',employees)
employees[0:0] = ['Yuki'] ##向索引为0的位置插入元素'Yuki'
print('修改后:',employees)
运行结果:
方法四:通过切片来删除元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
del employees[:] #删除employees[0] 和 employees[1]
print('修改后:',employees)
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
del employees[::]
print('修改后:',employees)
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees[:] = []
print('修改后:',employees)
运行结果:
注意:以上操作,只适用于可变序列
5. 列表的方法
向列表的最后添加一个元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.append('Mary')
print('修改后:',employees)
运行结果:
向列表的指定位置插入一个元素
参数:
1.要插入的位置
2.要插入的元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.insert(,'Mary')
print('修改后:',employees)
运行结果:
使用新的序列来扩展当前序列
需要一个序列作为参数,它会将该序列中的元素添加到当前列表中
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.extend(['Mary','Bunpoat'])
#或是employees += ['Mary','Bunpoat'] 可以达到一样的效果
print('修改后:',employees)
运行结果:
清空序列
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.clear()
print('修改后:',employees)
运行结果:
根据索引删除并返回被删除的元素
#删除指定索引的元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.pop(2) #删除索引为2的元素
print('修改后:',employees)
#删除最后一个元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.pop() #删除最后一个元素
print('修改后:',employees)
运行结果:
删除指定值的元素,如果相同值得元素有多个,只会删除第一个
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.remove('Yuki')
print('修改后:',employees)
employees.remove('Jack')
print('修改后:',employees)
运行结果:
用来反转列表
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.reverse()
print('修改后:',employees)
运行结果:
用来对列表中的元素进行排序,默认是升序排列
如果需要降序排列,则需要传递一个reverse=True作为参数
my_list = list('asnbdnbasdabd')
print('修改前',my_list)
my_list.sort() ##升序排序
print('修改后',my_list)
my_list = list('asnbdnbasdabd')
print('修改前',my_list)
my_list.sort(reverse=True) ##降序排序
print('修改后',my_list)
运行结果:
6. 遍历列表
遍历列表,指的就是将列表中的所有元素取出来
方法一:通过while循环来遍历列表
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
i =
while i < len(employees) :
print(employees[i])
i +=
运行结果:
方法二:通过for循环来遍历列表
for循环的代码块会执行多次,序列中有几个元素就会执行几次
每执行一次就会将序列中的一个元素赋值给变量,
所以我们可以通过变量,来获取列表中的元素
employees = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
for i in employees :
print(i)
运行结果:
今天我们先介绍到这里。