使用两层嵌套for循环按货架通道(Aisle)分组输出商品列表的问题
使用两层嵌套for循环按货架通道(Aisle)分组输出商品列表的问题
嘿,我一眼就瞅出问题出在哪了!你当前代码里合并通道列表的方式错了,导致外层循环只跑了一次,根本没法按通道分组输出。咱们一步步来改:
问题根源
你写的aisles = [aisle1 + aisle2 + aisle3]是把三个通道的所有商品揉成了一个大列表,再把这个大列表塞进了另一个列表里。这就导致外层for aisle in aisles循环其实只遍历到一个元素(那个装着所有商品的大列表),自然只会输出Aisle: 1的内容。
修正方案
咱们得把每个通道作为独立的子列表放进aisles里,而不是把所有商品混在一起。然后用两层嵌套for循环分别遍历通道和每个通道里的商品:
# 每个通道对应的商品列表 aisle1 = ["Tomatoes", "Carrots", "Lettuce"] aisle2 = ["Eggs", "Butter", "Cream"] aisle3 = ["Pasta", "Rice", "Cereal"] # 正确合并:把每个通道作为独立子列表存入aisles aisles = [aisle1, aisle2, aisle3] aisle_number = 1 # 外层循环:遍历每个通道 for aisle in aisles: print(f"Aisle: {aisle_number}") # 内层循环:遍历当前通道里的所有商品 for item in aisle: print(f"Contains {item}") # 每个通道遍历完后,通道号加1 aisle_number += 1
修正后的输出
运行上面的代码,就能得到你想要的结果:
Aisle: 1 Contains Tomatoes Contains Carrots Contains Lettuce Aisle: 2 Contains Eggs Contains Butter Contains Cream Aisle: 3 Contains Pasta Contains Rice Contains Cereal
额外小技巧(可选)
如果不想手动维护aisle_number变量,也可以用enumerate函数直接获取通道的索引(记得索引从0开始,所以要加1),代码会更简洁,还不容易出错:
aisles = [aisle1, aisle2, aisle3] # 用enumerate同时获取索引和通道列表,start参数指定起始编号 for aisle_number, aisle in enumerate(aisles, start=1): print(f"Aisle: {aisle_number}") for item in aisle: print(f"Contains {item}")
这个写法同样符合两层嵌套for循环的要求哦~
内容来源于stack exchange
相关产品推荐
相关产品推荐

