二、列表
1、定义
列表: 是Python中的一种数据类型,可以存放多个数据,列表中的数据可以是任意类型的
列表list ,定义使用[] 进行定义
定义空列表
my_list = []
my_list1 = list()
print(my_list ,type(my_list)) # []
print(my_list1 ,type(my_list1)) # []
定义带数据的列表数据元素之间使用逗号隔开
my_list2 = [1, 3.24, True, "IT"] # 在计算中布尔表达式的true代表1,false代表0
print(my_list2 ,type(my_list2)) # [1, 3.24, True, 'IT']
求列表中数据元素的个数,即列表的长度
num = len(my_list2)
print(num) # 4
列表支持下标和切片操作
print(my_list2[-1]) # IT
print(my_list2[1]) # 3.24
print(my_list2[1:3]) # [3.24, True]
下标操作和字符串操作中不同的是:字符串不能使用下标修改啊其中的数据,但是列表可以使用下标修改列表中的数据
字符串是一个整体,不能修改,但列表是分散的,所以支持索引修改
my_list2[0] = 18
print(my_list2) # [18, 3.24, True, 'IT']
my_list2[-1] = "hello"
print(my_list2) # [18, 3.24, True, 'hello']
my_list2[0] = "python"
print(my_list2) # ['python', 3.24, True, 'hello']
2、遍历
支持for循环和while循环
my_list = ["郭德纲","于谦",'孙越','名之以父']
for i in my_list :
print(i)
'''
郭德纲
于谦
孙越
名之以父
'''
print(""30)
j = 0
while j < len(my_list):
print(my_list[j])
j += 1
'''
郭德纲
于谦
孙越
名之以父
'''
3、CRUD 增删改查
(1)增加数据
向列表中添加数据的方法,都是直接在原列表中进行添加的,不会返回新的列表
my_list = ["郭德纲","于谦",'孙越','名之以父']
print(my_list)
列表:append(数据)向列表的尾部追加数据
my_list.append("aa")
print(my_list) # ['郭德纲', '于谦', '孙越', '名之以父', 'aa']
result = my_list.append(12)
print(result) # None 关键字,表示空
print(my_list) # ['郭德纲', '于谦', '孙越', '名之以父', 'aa', 12]
列表.insert(下标,数据)在指定的下标位置进行添加数据
my_list.insert(0,"isaac")
print(my_list) # ['isaac', '郭德纲', '于谦', '孙越', '名之以父', 'aa', 12]
print(my_list.insert(5, 3.24 )) # None
列表.extend(可迭代对象) # str类型和列表,会将可迭代对象中的数据逐个添加到原列表的末尾
my_list.extend('helli')
print(my_list) # ['isaac', '郭德纲', '于谦', '孙越', '名之以父', 3.24, 'aa', 12, 'h', 'e', 'l', 'l', 'i']
my_list.extend([1,'python',3])
print(my_list) # ['isaac', '郭德纲', '于谦', '孙越', '名之以父', 3.24, 'aa', 12, 'h', 'e', 'l', 'l', 'i', 1, 'python', 3]
在这里Python被作为一个整体输出,需要带引号才会被认为是作为整体的
(2)删除数据
my_list = [1, 2, 4, 5, 6, 9]
1、根据元素的数据值删除remove(数据值),直接原列表中的数据
my_list.remove(4)
print(my_list) # [1, 2, 5 ,6, 9]
print(my_list.remove(4)) # 程序报错,要删除的数据不存在
2、 根据下标删除
2.1 pop(下标) :默认删除最后一个数据,返回删=删除的内存
num = my_list.pop() # 删除最后一个数据
print(num) # 9
print(my_list) # [1, 2, 5, 6]
num = my_list.pop(2) # 删除下标为2的数据 5
print(num)
print(my_list) # [1, 2, 6]
2.2 del 列表[下标]
del my_list[1]
print(my_list) # [1, 6]
del my_list[10] # 删除下标不存在的,会报错
(3)修改数据
直接修改即可
(4)数据查询
my_list = [1, 3.14, 'isaac' , True]
num = my_list.index(3.14) # 1
print(num)
num1 = my_list.index(100) # 程序报错,因为数据不存在
count() 统计出现的次数
num2 = my_list.count(1)
print(num2) # 2 True算 1
in / not in : 判断是否存在,存在是True,不存在是False,一般和if结合使用
num3 = 3.14 in my_list
print(num3) # True
num3 = 3.14 not in my_list
print(num3) # False
4、列表的排序和逆置
想要对列表中的数据进行排序,前提是列表中的数据类型是一样的
my_list = [1, 5, 3, 7, 9, 6]
列表.sorted(列表) 排序,不会在原列表中进行排序,会得到一个新的列表
my_list.sort() # 默认是从小到大的,即升序
my_list.sort(reverse=True) # 通过reverse=True,从大到小排序
print(my_list)
补充:sorted(列表) 排序,不会在原列表中进行排序,会得到一个新的列表
my_list1 = sorted(my_list) # [1, 3, 5, 6, 7, 9]
my_list2 = sorted(my_list,reverse=False) # [1, 3, 5, 6, 7, 9] ,填False的话,相当于是没改变,还是升序的
my_list3 = sorted(my_list,reverse=True) # [9, 7, 6, 5, 3, 1]
print(my_list)
print(my_list1)
print(my_list2)
print(my_list3)
print(""30)
my_list4 = ['a', 'b', 'c', 'd', 'e']
逆置
my_list5 = my_list4[::-1] # 得到一个新的列表
print(my_list4)
print(my_list5) # ['e', 'd', 'c', 'b', 'a']
在原列表直接逆置 列表,reverse()
print(my_list4.reverse()) # None
my_list4.reverse()
print(my_list4) # ['e', 'd', 'c', 'b', 'a']
5、列表嵌套
school_names = [['北京大学', '清华大学'],
['北京邮电大学', '西安邮电大学', '重庆邮电大学'],
['山东大学', '南开大学']]
print(school_names[1]) # ['北京邮电大学', '西安邮电大学', '重庆邮电大学']
print(school_names1) # 西安邮电大学
print(school_names1[1]) # 安
山东大学
print(school_names2)
for schools in school_names: # 先遍历外层循环,大列表
# print(schools) # 列表
for name in schools: # 再遍历小循环,内层列表
print(name)
6、案例:分配办公室
import random
1、定义学校列表
schools = [[], [], []] # 三个小列表就是三个办公室,对应的下标是 0 1 2
2、定义老师列表
teachers = ['A','B','C','D','E','F','G','H']
3、让老师抓阄
3.1 遍历老师列表
for teacher in teachers :
# 3.2 抓阄产生随机数
num = random.randint(0, 2) # 产生的随机数,相当于是办公室的下标
# 在randint里面包含结束位置的(Python里面唯一一个包含结束位置的)
# 3.2 老师进入办公室,蒋老师名字添加到办公室列表中
schools[num].append(teacher)
print(schools)
for office in schools:
print(f'该办公室老师的个数为{len(office)},办公室老师的名字是:')
# 相当于是遍历里面每个列表的长度
for teacher in office:
print(teacher,end=' ')
print()