5分钟带你了解Python中的容器型数据类型--列表3

本文介绍了列表推导式和嵌套的高效用法,通过实例展示如何快速创建和操作二维表格数据,如成绩统计和数据筛选。列表推导的简洁语法让你轻松处理复杂数据,而列表嵌套则用于存储和组织多维度信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表推导式和列表的嵌套

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)}")

怎么样,是不是挺有意思呢?

如果对你有帮助,不要帮助点赞、评论、关注加收藏哦!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python和数据分析

钟意作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值