高级 Python 开发课程
第 章
>
第 级
高级列表
创建嵌套列表
目标
通过使用嵌套列表,将调味料正确存放在香料架上。
其中一个香料架空空如也,需要正确补充存货,储藏室中有调味品,但需要合适地归类整理,放入香料架中。
由于物品数量众多,并且存放在香料架的不同层架中,普通列表和字典已经不足以应对这种情况。对于这种情况可以使用 嵌套列表,也就是在一个列表中包含一个或多个列表。
为了存放香料,你首先需要拿到罐子,以便正确储存物品,走到金色的 X 标记处,对准货箱并使用 collect() 函数收集 "empty jar" 来帮助储存。
收集到罐子后,走向木箱前那几个浅色 X 标记。本关中有四个列表常量存在,每个木箱对应一个,分别为:crate1、crate2、crate3 和 crate4。使用 speak() 函数和这些列表常量来确定每个木箱的内容,这些常量对应木箱的位置是从右到左,例如 player.speak(crate1)。
一旦确定了木箱的内容,使用 列表推导式 创建不包含列表常量中不必要物品的新列表。如果木箱中的内容包括:"package"、"string" 或 "stuffing",请使用上一章节中的相同公式来构建列表,例如:
crate1 = ["bay herb", "cilantro herb", "ginger herb", "oregano herb", "string"] herbs = [x for x in crate1 if not "string" in x]
上面的代码将创建一个新列表,其中的项目不会包含单词 "string"。这些列表应命名为:herbs、spices、salts 和 sugars,你可以根据列表内项目的名称来确定该命名。
创建完所有四个列表后,现在是将它们组合成一个 嵌套列表 的时候了。创建一个名为 seasonings 的列表,并将你创建的各个列表添加到这个新列表中,如下所示:
seasonings = [ ] seasonings.append(herbs) .......
当所有项目都被组合到这个 嵌套列表 中后,走到绿毯上黑色的 X 标记处,对准架子。使用 speak() 函数配合 seasonings 嵌套列表来确认每层架子上的物品。之后,使用 place() 函数与该列表一起完成关卡,例如:player.speak(seasonings)。