Продвинутый курс разработки на Python
Глава
>
Уровень
Расширенные списки
Создание вложенного списка
Цель
Правильно храните приправы на полке для специй, используя вложенные списки.
Одна из полок для специй пуста и требует пополнения запасов, при этом специи уже хранятся в запасе, но их нужно правильно разместить и организовать на полке для специй.
Из-за большого количества предметов и того, что они хранятся на разных полках, обычных списков и словарей будет недостаточно. Для подобных ситуаций вы можете использовать Вложенные Списки — это списки, содержащие один или несколько списков внутри себя.
Чтобы хранить специи, сначала необходимо взять банки для правильного хранения предметов, подойдите к золотому знаку X, повернитесь к ящику и используйте функцию collect(), чтобы взять "empty jar" для облегчения хранения.
После того как банки собраны, подойдите к светлым знакам X перед деревянными ящиками. В этом уровне присутствуют четыре (4) константы списка, по одной для каждого ящика: crate1, crate2, crate3 и crate4. Используйте функцию speak() с этими константами списков, чтобы определить содержимое каждого ящика; константы соответствуют ящикам с права налево, например player.speak(crate1).
После определения содержимого ящиков используйте List Comprehensions для создания новых списков, в которых не будет ненужных элементов, найденных в константах списков. Если содержимое ящика включает: "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).