开发者学堂课程【Python 入门 2020年版:列表的嵌套】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10304
列表的嵌套
内容介绍
一、列表嵌套
二、应用1
三、应用2
一、列表嵌套
定义一个nums的列表,再在其中嵌套一个列表,这就是列表的嵌套。
在C语言和其他语言中称为多维数组,在python中就是叫做列表的嵌套。使用嵌套时有些许复杂,在开发中有时会使用。
类假while循环的嵌套,列表也是支持嵌套的,一个列表中的元素又是一个列表,那么这就是列表的嵌套。此处重点掌握怎么操作被嵌套的列表。
nums =[1,2,[100,200,500],3,4,5]
二、应用1
由题中,我们先定义teachers列表,其中含有10个数据。现在要将这10个数据分配到三个房间中,因为房间中需要存放人的信息,所以使用列表的嵌套,rooms = [ [],[],[] ]表示一个大的变量分为三个部分,再向其中放入教师。
而选择重复选择一名老师还是一个房间去循环?
当然是选择房间,因为随机取老师,则可能发现老师被重复取得多次,使得多个办公室含一名老师,但一名老师仅可以在一个房间中。而选择房间则不存在这种问题,因为一个房间可以放多名老师。
为了随机的取得任意房间我们import randon导入随机选取方法randon。room = random.choice(room) ,其中choice方法表示从列表里随机选择一个数据,即room里保存了三个房间,我们随机取一个,取出的数据仍是列表,然后我们将老师放入即可。
#一个学校,有3个办公室,现在有10位老师等待工位的分配,请编写程序,完成随机的分配
1.代码
/表示10个老师
teachers = [ 'A', 'B', 'c', 'D','E','F', 'G','H','I','3']
rooms = [ [],[],[] ]
//将rooms一个大的变量分为三个部分
for teacher in teachers
: //循环取出teachers的每个元素
room = random.choice(room)
//从room中随机挑选一个房间
# choice从列表里随机选择一个数据
room.append(teacher)
//将教师放入房间
print(rooms)
2. 输出结果
//第一次随机分配的结果
[[ 'A','B','E','],['H','I'],[ 'c','D','F','G']]
//第二次随机分配的结果
[['B', 'D','E','H'],['c', 'F','G,'I','3'],['A']]
//第三次随机分配的结果
[[ 'A','D','E','F','I'],[ 'B', 'G','3'],['C','H']]
3. 代码解读
代码在运行时,出现以下结果,执行的顺序是首先找到teachers中的’A’元素,使得teacher=’A’,房间选取的是rooms = [ [],[],[] ] 的第一个房间,将’A’放入。
等到下次’B’时,随机选取的就是第二个房间,’C’时再随机选取至第三个房间将其放入。
之后依次为'E','F', 'G','H','I'和'3'随机分配房间。就得到本次的分配结果。同时在此随机平均分并不能实现,因为只有10个教师而3个房间不能均分。而如果有9个老师平均分在3个房间的代码,在此不做解析,供同学课后思考。
[[ 'A','D','E','F','I'],[ 'B', 'G','3'],['C','H']]
三、应用2
1. 求房间里的老师数
要求:
要打印输出,第0个房间有几个人,同时输出这几个人的名字。即假设此时第一个房间为 [ ‘A',’C’ , ‘F',‘6'],第二个房间[ 'B',’E',‘I'],第三个房间为['D',’H',’J'],现要打印输出这几个房间的人数和名字。
方法
采用for room in rooms:表示将rooms中的每个房间一个个拿出来。同时每个房间即列表,使用len求出房间的长度,即所含的人数。之后再打印输出。
#第0个房间有3个人,分别是.....
#[ [ ‘A',’C’ , ‘F',‘6'],[ 'B',’E',‘I'],['D',’H',’J']]
(1)代码
teachers = [ 'A', 'B', 'c', 'D','E','F', 'G','H','I','3']
rooms = [ [],[],[] ]
//将rooms一个大的变量分为三个部分
for teacher in teachers
: //循环取出teachers的每个元素
room = random.choice(room)
//从room中随机挑选一个房间
# choice从列表里随机选择一个数据
room.append(teacher)
//将教师放入房间
print(rooms)
for room in rooms:
//将rooms里的房间一个个拿出
print(‘房间里一共有%d个老师’% len(room))
//打印输出结果
(2)输出结果
[[ 'G', 'H"],['B', "D', 'E', "'],['A', 'c', 'F','I']]
//随机分配的结果
房间里一共有2个老师 //打印输出第一个房间的老师数
房间里一共有4个老师 //打印输出第二个房间的老师数
房间里一共有4个老师 //打印输出第三个房间的老师数
2.求是第几个房间
求为第几个房间即求其房间的下标,我们一般常用while。但其实for循环也可以带下标,只用添加enumerate即可,for i, room in enumerate (rooms):
就表示带下标的for循环写法形式。其中i表示下标,room表示当前循环的变量。
(1)代码--红色为讲解代码
teachers = [ 'A', 'B', 'c', 'D','E','F', 'G','H','I','3']
rooms = [ [],[],[] ]
//将rooms一个大的变量分为三个部分
for teacher in teachers
: //循环取出teachers的每个元素
room = random.choice(room)
//从room中随机挑选一个房间
# choice从列表里随机选择一个数据
room.append(teacher)
//将教师放入房间
print(rooms)
for i, room in enumerate (rooms):
//将rooms里的房间一个个拿出,同时得到当前房间的下标
print(‘房间%d里一共有%d个老师,分别是:’% (i,len(room)))
//打印输出结果
(2)输出结果
[[ 'H','I'],['A','B','C', ‘F', 'G',''],[ 'D','E']]
//随机分配房间后的结果
//输出随机分配结果后各个房间的对应老师数量
房间0里一共有2个老师
房间1里一共有6个老师
房间2里一共有2个老师
3.求房间里具体的人数
要打印其中所含的老师是谁,只需要再添加一个for.....in循环打印输出当前房间中的每个老师即可。在最后添加end来使得输出结果更加美观。
(1)代码--红色为讲解代码
teachers = [ 'A', 'B', 'c', 'D','E','F', 'G','H','I','3']
rooms = [ [],[],[] ]
//将rooms一个大的变量分为三个部分
for teacher in teachers :
//循环取出teachers的每个元素
room = random.choice(room)
//从room中随机挑选一个房间
# choice从列表里随机选择一个数据
room.append(teacher)
//将教师放入房间
print(rooms)
for i, room in enumerate (rooms):
//将rooms里的房间一个个拿出,同时得到当前房间的下标
//添加end使得输出的老师名能够在“房间..里一共有..个老师,分别是”之后继续输出。
print(‘房间%d里一共有%d个老师,分别是:’% (i,len(room))
,end=’ ’)
//打印输出结果
//将room(当前循环的房间)的每个元素里的老师依次输出
for teacher in room:
print(teacher,end=’\t’)
//使得输出的老师名在同一行
(2)输出结果
[['A', 'c', F'], ['B','E', 'G','H','I',‘J'],['D']]
房间0里一共有3个老师,分别是:
A
C
F
房间1里一共有4个老师,分别是:
B
E
G
H
房间2里一共有1个老师,分别是:
D
(3)美化输出格式
要使得输出的教师名放在同一行,首先将最后一行代码变为print(teacher,end=’\t’),再次运行。
l 输出结果
[['A','B','I','3', [' c','E','6','H'],[ 'D','F']]
房间0里一共有4个老师,分别是:
A B I ,
房间1里一共有4个老师,分别是:
C E G H
房间2里一共有2个老师,分别是:
D F
如果想让输出的每个房间的老师名结果不换行,则变为print(‘房间%d里一共有%d个老师,分别是:’% (i,len(room))
,end=’ ’)即可。
输出结果
[['A','B','I','3', [' c','E','6','H'],[ 'D','F']]
房间0里一共有4个老师,分别是:A B I ,
房间1里一共有4个老师,分别是:C E G H
房间2里一共有2个老师,分别是:D F