列表推导式和列表的嵌套
1.列表推导式(列表生成式)
定义一个列表,共有三种方法
1.字面量语法
比如:
names = [] # 构造一个空列表
names = ['刘备', '关羽', '张飞','曹操', '吕布']
2.构造器语法
items1 = list(range(1, 10))
print(items1) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
items2 = list('hello')
print(items2) # ['h', 'e', 'l', 'l', 'o']
3.生成式语法(特殊的字面量语法)
这里用到的方式叫做列表生成式,也叫作列表推导式。
首先,我们先看看用之前的字面量语法创建一个装有1-100的整数的列表
nums = []
for num in range(1,101):
nums.append(num)
print(nums)
然后,我们看看用生成式创建同样的列表
nums = [num for num in range(1,101) ]
print(nums)
对比一下,第一种闲的不仅lower,而且太过麻烦
而列表生成式也是非常好理解的
它的语法
是
列表名 = [要添加进来的元素 循环(没有冒号 :)]
现在再看上面的例子,是不是惊呆了,还可以这样方便
循环后面一定没有 冒号
并且循环那里是加判断语句或者是可以多重循环的,例如
加判断语句:
# 创建一个由'hello world'中除空格和元音字母外的字符构成的列表
words = [word for word in 'hello world' if word not in ' aioeu']
print(words) # ['h', 'l', 'l', 'w', 'r', 'l', 'd']
列表中双重for循环
# 创建一个由个两个字符串中字符的笛卡尔积构成的列表
items = [x + y for x in 'ABC' for y in '12']
print(items) # ['A1', 'A2', 'B1', 'B2', 'C1', 'C2']
赶紧自己试试,下面,我们来看列表的嵌套
2.列表的嵌套(知识点补充)
顾名思义,列表的嵌套
就是一个列表中,外层是一个列表,里面的元素又是列表,那这样我们就将它叫做列表的嵌套,那它这样做有什么用呢?是为了装X吗?看完下面的例子,你就明白了,首先看看它应该是这样的一个样子:
scores = [[92, 86, 68, 54, 73], [74, 80, 91, 79, 89], [73, 80, 80, 82, 76]]
可能这样看你还不能发现什么觉得它有用的地方,那这样呢?
scores = [[92, 86, 68, 54, 73],
[74, 80, 91, 79, 89],
[73, 80, 80, 82, 76]]
是不是和我们日常操作的表格二维表很像呢?一个三行五列的表格,没错,可能你也想到了,比如你想存储数据,完全就可以借用这样一个“表格”来帮你进行存储,而且不只是存储,当你想处理里面的数据的时候,同样可以对他们进行操作。
例如:保存5个学生,3门课程的成绩,那就是上面那样保存
scores = [[65, 88, 64], [68, 61, 64], [59, 97, 94], [57, 71, 79], [63, 61, 85]]
names = ['刘备', '关羽', '张飞','曹操', '吕布']
courses = ['语文', '数学', '英语']
例如要对数据进行操作:
1.显示学生的名字和分数
for i, name in enumerate(names):
for j, course in enumerate(courses):
print(f"{name}的{course}成绩为{scores[i][j]}分")
2.统计每个学生的平均成绩
# 统计每个学生的平均成绩
for i, name in enumerate(names):
print(f"{name}的平均成绩为{sum(scores[i])/len(courses)}分")
3.找到统计每一门课程的最高分和最低分
for j, course in enumerate(courses):
temp = [scores[i][j] for i,score in enumerate(scores)] # 将每一门课程成绩放到临时变量中
print(f"{course}的最高分是{max(temp)}")
print(f"{course}的最低分是{min(temp)}")
怎么样,是不是挺有意思呢?
如果对你有帮助,不要帮助点赞、评论、关注加收藏哦!