哈罗,各位大朋友小朋友们!咱们的带娃编程频道又准时上线啦。
在之前的课程里,我们带孩子们学过了“百宝袋”列表,也学过了让电脑自动排队点名的 for 循环。不知大家有没有遇到过这种场景:我们手里有一个装满数字的列表,现在想把里面每一个数字都稍微“加工”一下,比如全部求个平方,然后再装进一个新的列表里。
按照咱们以前的笨办法,娃得老老实实写下4行代码:先建个空箱子,再用 for 循环挨个点名,然后算平方,最后再用 append 塞进新箱子。写多了,娃直呼手酸!
其实,真正的 Python 高手,这种活儿只要 1行代码 就能搞定!今天,咱们就带孩子们解锁 Python 里极其炫酷的“偷懒”大招——列表推导表达式(一层循环)!
📦 什么是“列表推导表达式”?
别看这个名字听起来像大学高数课里的名词,用大白话来说,它就是一个“超级压缩包”或者“全自动流水线”。
它的核心作用非常明确:将一个列表(或者任何可迭代对象)直接转换成另一个新的列表。在转换的过程中,你可以按自己的需求,把拿出来的每个元素加工一下,自动放进新列表里。
这样写不仅大大减少了代码量,看起来极其清爽,而且编译器还会对它进行特殊优化,让程序跑得比普通 for 循环还要快,同时大大减少了娃写错代码的概率!
🛠️ 对比见真知:4行 VS 1行
咱们直接拿书上的经典例子来比一比。 假设有一个装了 1 到 10 的列表,我们要把里面的数字全部求平方,然后装进一个新列表里。
🐌 老黄牛写法(常规方法):
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]list2 = [] # 第1步:准备一个空箱子for i in list1: # 第2步:让 for 循环挨个点名list2.append(i**2) # 第3步:加工求平方,第4步:塞进新箱子print(list2)
🚀 闪电侠写法(推导表达式):
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 下面这一行就是见证奇迹的时刻!list2 = [i**2 for i in list1] print(list2)
是不是惊呆了?原本又臭又长的4行操作,被完美压缩进了一个中括号
[] 里!🔍 拆解魔法公式:它到底是怎么工作的?
很多娃第一次看这行代码会有点懵。其实,它的语法公式就像一句倒装句:
👉 公式:list1 = [表达式 for 元素 in 迭代对象]
我们可以带娃这样去“大白话”翻译它:
连起来读就是: 从 list1 里每次拿出一个 i,把它变成 i2,然后直接留在现在的这个中括号 [] 里!
💡 陪娃小妙招:昨晚我教儿子这招时,他一开始死活记不住顺序。我教他一个口诀:“先说结果,再说动作”。 比如我想给全班每个人的成绩都加 5 分。普通说话是:“把分数拿出来,加 5 分。” 在推导表达式里要反过来说:“变成分数+5(表达式),对于每个分数在成绩表里(for 循环)!” 娃套用这个口诀一写:new_scores = [score + 5 for score in scores],瞬间就开窍了!
📝 今日带娃成就卡
今天,咱们带孩子彻底跨入了 Python 进阶语法的门槛,掌握了这个极具“高级感”的超级压缩包:
认知升级: 懂得了推导表达式其实就是 for 循环和 append 的最强结合体。
效率翻倍: 记住了 [表达式 for 元素 in 迭代对象] 这条能让代码量锐减、运行提速的神奇公式。