Coding for KidsCoding for Kids
Poziomy KreatywneWyzwaniaPrzewodnik dla Nauczycieli
Głosuj na funkcje
Zaawansowany kurs programowania w Pythonie
Rozdział
>
Poziom

Zaawansowane listy
Wyrażenia listowe

W tym rozdziale poznamy nowe sposoby wykorzystania list w Pythonie, dotyczące optymalizacji, kompartmentalizacji, a nawet tworzenia dużych, wielowymiarowych list, przypominających macierze lub tabele.

Na tym poziomie będziemy pracować z wyrażeniami listowymi (List Comprehensions), czyli listami, które można utworzyć na podstawie innych list poprzez wybór tylko wybranych elementów. Dokonuje się tego w bardzo prosty sposób, w pojedynczej linii kodu, bez konieczności ręcznego wprowadzania listy lub tworzenia złożonych automatyzacji.

Guide

Cel

Zbierz i posegreguj wszystkie warzywa korzeniowe w spiżarni, abyś mógł je przechować we właściwym miejscu, wykorzystując list comprehensions.

Spiżarnia zawiera kilka worków pełnych warzyw korzeniowych, które trzeba posegregować, a mianowicie: potatoes, onions i garlic. Prawdopodobnie znajdują się tam również warzywa, które uległy zepsuciu. Wyjmij warzywa, które są dobre, i umieść je w skrzyniach, do których należą.

Aby to osiągnąć, musisz ustalić, jakie przedmioty znajdują się w każdym worku. Istnieją trzy stałe listy, które przechowują informacje o każdym z worków. Nazywają się one: left_sack, middle_sack, right_sack. Stałe te odpowiadają workom na polu, w lokalizacjach określonych przez ich nazwy.

Podejdź do jasnych znaków w postaci X przed każdym workiem i użyj funkcji speak(), aby zidentyfikować zawartość worków, korzystając z podanych stałych, na przykład: player.speak(left_sack). Po ustaleniu zawartości każdego worka, zidentyfikuj elementy, które należy usunąć, czyli te, które w swojej nazwie zawierają słowa: "Bad", "Spoiled" lub "Rotten".

Musisz utworzyć nowe listy, które zawierają tylko produkty nadające się do spożycia. Mógłbyś to zrobić ręcznie, ale zajmie to trochę czasu i może być dość mylące. Aby osiągnąć ten cel bardziej efektywnie, możesz stworzyć listę na podstawie innej listy – jest to znane jako List Comprehension.

Z trzech stałych list: left_sack, middle_sack, right_sack stwórz trzy nowe listy o nazwach: potatoes, onions i garlic, które nie zawierają niepożądanych elementów z worków. List Comprehensions umożliwiają tworzenie nowych list bez konieczności pisania mnóstwa kodu, na przykład:

# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]

W powyższym przykładzie lista o nazwie potatoes została utworzona na podstawie listy sack i zawiera jedynie elementy ["Potatoes", "Sweet Potatoes"], pomijając `

Księga Kodów