Python新手求助:如何理解提取嵌套列表元素的列表推导式
帮你解析这个Python列表推导式的逻辑
嗨!作为Python新手能主动琢磨代码逻辑已经超棒啦😉,我来一步步给你讲清楚这个神奇的语法:
首先先明确你的marksheet是什么——它是一个嵌套列表,每个子列表里都存着[姓名, 成绩]这样的配对,比如你输入后的结果就是:
[['sam', 98.0], ['mike', 96.0]]
核心:这是Python的「列表推导式」
你用到的[marks for name,marks in marksheet]是Python里专门用来快速生成列表的语法,我们可以拆成3个部分理解:
- 最外层的
[]:告诉Python我们最终要生成一个新列表 - 前面的
marks:表示我们要把每次循环拿到的marks值,作为新列表里的元素 - 后面的
for name,marks in marksheet:这是循环+解包的操作:- 我们循环遍历
marksheet里的每一个子列表(也就是每个[姓名,成绩]的小列表) - 用
name,marks这种写法,Python会自动把小列表的第一个元素赋值给name,第二个元素赋值给marks——这就是「解包」,把嵌套的内容拆成单独的变量
- 我们循环遍历
为什么改变量名依然有效?
你改成[test for yellow,test in marksheet]后依然能用,是因为变量名只是你给元素起的“外号”,Python只关心位置:
- 只要你写
for 变量A,变量B in 子列表,Python就会固定把每个子列表的第一个元素给变量A,第二个给变量B - 你前面写哪个变量,就会把哪个变量的值收集到新列表里。比如你写
test,就收集每个子列表的第二个元素(成绩),和原来的marks效果完全一样
举个更简单的例子帮你理解:
demo_list = [['苹果', 5], ['香蕉', 3], ['橘子', 4]] # 收集价格,变量名随便取 result = [price for fruit_name, price in demo_list] print(result) # 输出 [5,3,4]
这种列表推导式是Python里非常常用的简洁写法,多写几次就能熟练掌握啦!
内容的提问来源于stack exchange,提问作者user1550159
相关产品推荐
相关产品推荐

