列表的嵌套|学习笔记

简介: 快速学习列表的嵌套

开发者学堂课程【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

相关文章
|
2月前
定义列表
定义列表。
16 2
|
2月前
|
Python
列表推导式有什么用途呢
【9月更文挑战第5天】列表推导式有什么用途呢
18 6
|
4月前
|
存储 索引 Python
元组和列表的区别?
【7月更文挑战第13天】元组和列表的区别?
307 6
|
4月前
|
存储 语音技术 索引
语音识别,列表的定义语法,列表[],列表的下标索引,从列表中取出来特定的数据,name[0]就是索引,反向索引,头部是-1,my[1][1],嵌套列表使用, 列表常用操作, 函数一样,需引入
语音识别,列表的定义语法,列表[],列表的下标索引,从列表中取出来特定的数据,name[0]就是索引,反向索引,头部是-1,my[1][1],嵌套列表使用, 列表常用操作, 函数一样,需引入
|
6月前
|
Python
Python使用if语句处理列表及如何使用列表推导式来创建一个新列表
Python使用if语句处理列表及如何使用列表推导式来创建一个新列表
82 0
|
6月前
|
程序员 Python
Python列表批量删除所有指定元素的函数设计
使用Python删除列表中所有指定元素的方法可能有很多种,比如for循环之类的,但这里要设计一种可以直接通过函数传参的形式输入要删除的指定元素的方法,而且尽可能地让Python的代码足够简单的同时,能够重复利用,且方便重复利用,因此,
56 4
|
Python
python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
|
Python
【从零学习python 】19. 循环遍历列表和列表嵌套的应用
【从零学习python 】19. 循环遍历列表和列表嵌套的应用
120 0
【从零学习python 】19. 循环遍历列表和列表嵌套的应用
|
存储 Java 索引
21.从入门到精通:Python数据结构 列表 将列表当做堆栈使用 将列表当作队列使用 列表推导式 嵌套列表解析 del 语句
21.从入门到精通:Python数据结构 列表 将列表当做堆栈使用 将列表当作队列使用 列表推导式 嵌套列表解析 del 语句
leetcode_341. 扁平化嵌套列表迭代器
题目链接: 341. 扁平化嵌套列表迭代器 前排提示,这是一道跟树有关的题目,而且是 N 叉树,关于 N 叉树的入门题目可以参考我之前的一篇文章,leetcode 之浅谈 N 叉树 题目 给你一个嵌套
leetcode_341. 扁平化嵌套列表迭代器
下一篇
无影云桌面