![[Python 从入门到放弃] 2. 列表的其它操作 [Python 从入门到放弃] 2. 列表的其它操作](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
1. 列表可以混合不同类型的数据项
movies=['《黄飞鸿之英雄有梦》','《寒战2》','《乘风破浪》']
在这句代码中,数据项为电影名称,现在这个列表用来保存电影。
我需要也把电影的发行的年份也保存进来,类似这种格式:
《黄飞鸿之英雄有梦》 2014 《寒战2》2016 《乘风破浪》2017
在每部电影后面都加上年份。
这可以用到列表的了一个特性,不同类型的数据可以混合在同一个列表。
ps:在java或者c++中,同一个数组只能保存同一种数据类型的元素
修改后是这样:
movies=['《黄飞鸿之英雄有梦》',2014,'《寒战2》',2016,'《乘风破浪》',2017] 现在有两种方法:1.直接定义一个这样的列表
movies=['《黄飞鸿之英雄有梦》',2014,'《寒战2》',2016,'《乘风破浪》',2017]
2.在原来的列表上进行插入
# 原本是movies=['《黄飞鸿之英雄有梦》','《寒战2》','《乘风破浪》'] movies.insert(1,2014) # 在0后面插入 movies.insert(3,2016) # 上一句代码已经插入了一个数 所以现第二部电影的位置为2 插入位置就为3 movies.append(2017) #最后的数直接用append()就好
2.列表中的列表
现在,需要在电影列表中加入主演的名字
我们重新定义一个列表:
movies=['《黄飞鸿之英雄有梦》',['彭于晏','王珞丹','井柏然'],'《寒战2》',['彭于晏','梁家辉','郭富城'],'《乘风破浪》',['彭于晏','邓超','赵丽颖']]
对,还有这种操作!
列表中可以包含列表
这样子就有两层列表,外围列表and嵌套列表,也就是列表中的列表
问题1:如何遍历输出列表的数据项:
for item in movies: # item只是一个自定义变量 print(item) '''执行过程:1. 将列表的一个数据项赋值给item (item 是合法变量)2.执行冒号里面的代码段:打印输出item3.循环操作第1.2步骤,知道列表中所有的数据项都使用过'''
运行结果:
《黄飞鸿之英雄有梦》
['彭于晏','王珞丹','井柏然']
《寒战2》
['彭于晏','梁家辉','郭富城']
《乘风破浪》
['彭于晏','邓超','赵丽颖'] '''运行的结果,虽然能够将电影名字都输出,以及输出其演员名单,但并不能逐个输出演员名字'''
也就是,这次遍历是外围列表的数据项都输出了(嵌套的列表也被视为外围列表的数据项),但内层嵌套的列表的数据项并不能逐一打印输出
我们需要是这样的:
《黄飞鸿之英雄有梦》 彭于晏 王珞丹 井柏然
怎么办?
isinstance()方法可以排上用场:
isinstance()方法用于判断参数1是否是参数2指定的那种数据类型,是返回True,错误False
isinstance(movies,list) # 判断movies是不是一个列表 return True/False
上面我们想要打印输出内层嵌套列表的数据项,
1.可以在外围列表遍历的时候检测该数据项是不是列表
2.如果是,再遍历该列表 如何打印输出
3.如果不是,直接打印输出
for item in movies: if isinstance(item,list): #判断是不是列表 for item_in in item: print(item_in) else: print(item) #不是就直接输出
执行结果:
《黄飞鸿之英雄有梦》 彭于晏 王珞丹 井柏然 《寒战2》 彭于晏 梁家辉 郭富城 《乘风破浪》 彭于晏 邓超 赵丽颖
现在已经OJBK了,但是好像还有问题?