Wyrażenia listowe

Zadanie 20 z 21 · rozdział 9Trudność: 1 z 3listywyrażenia listowelist comprehension

Treść zadania

Wczytaj listę n liczb całkowitych i utwórz z niej trzy nowe listy — każdą jednym wyrażeniem listowym:

  1. kwadraty — kwadraty wszystkich elementów (w tej samej kolejności),
  2. ujemne — tylko elementy ujemne (w kolejności występowania),
  3. etykiety — dla każdego elementu napis "P", jeśli jest parzysty, albo "N", jeśli jest nieparzysty.

Wypisz te trzy listy.

Dane wejściowe

  • 1. linia: liczba elementów n
  • 2. linia: n liczb całkowitych oddzielonych spacjami

Dane wyjściowe

Trzy linie — listy kwadraty, ujemne i etykiety w formacie print(lista). Lista napisów wypisuje się z apostrofami, np. ['N', 'P']. Jeśli nie ma elementów ujemnych, druga linia to [].

Ograniczenia

  • $n \ge 1$

Uwagi

  • Wyrażenie listowe buduje listę w jednej linii: [wyrażenie for x in lista], np. [x + 1 for x in [1, 2, 3]] daje [2, 3, 4]. Takiego wyrażenia używa już linia wczytująca listę: [int(x) for x in input().split()].
  • Filtrowanie — warunek na końcu zostawia tylko pasujące elementy: [x for x in lista if x > 2]; dla [1, 2, 3, 4] daje [3, 4].
  • Wybór wartości — wyrażenie a if warunek else b na początku wybiera wartość dla każdego elementu: ["duża" if x > 2 else "mała" for x in lista]; dla [1, 3] daje ['mała', 'duża'].
  • Zwróć uwagę na różnicę: if na końcu (bez else) usuwa elementy, a if … else … na początku zamienia każdy element — lista wynikowa ma wtedy tyle samo elementów co wejściowa.
  • 0 jest liczbą parzystą.

Przykład

Wejście
5
3 -2 0 -7 4
Wyjście
[9, 4, 0, 49, 16]
[-2, -7]
['N', 'P', 'P', 'N', 'P']

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 9

Zadania w tym rozdziale ćwiczą podstawowe operacje na listach: wczytywanie, przechodzenie pętlą, modyfikowanie elementów, wyszukiwanie i zliczanie.

Konwencje wspólne:

  • Każde zadanie (i każdy podpunkt) to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
  • Lista na wejściu zajmuje dwie linie: w 1. linii jest liczba elementów n, a w 2. linii — n liczb oddzielonych pojedynczymi spacjami. Dodatkowe dane (np. szukany klucz) są w kolejnych liniach, po jednej wartości w linii.
  • Taką listę wczytasz np. tak:
    ```python
    n = int(input())
    lista = [int(x) for x in input().split()]
    `
  • Gdy wynikiem jest lista, wypisz ją instrukcją print(lista). Python wypisze ją w nawiasach kwadratowych, z elementami oddzielonymi przecinkiem i spacją, np. [4, 10, 8]. Pusta lista to [].
  • Jeśli zadanie mówi „oddzielone spacją” — użyj pojedynczej spacji.
  • Indeksy elementów liczymy od 0.
  • Program nie wypisuje komunikatów typu „Podaj liczbę:”.

Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.

Python uruchomi się w przeglądarce przy pierwszym teście.

Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.

Testy

Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.

Test 1

Nie uruchomiono
Wejście
1
0
Oczekiwane wyjście
[0]
[]
['P']

Test 2

Nie uruchomiono
Wejście
3
1 2 3
Oczekiwane wyjście
[1, 4, 9]
[]
['N', 'P', 'N']

Test 3

Nie uruchomiono
Wejście
4
-1 -2 -3 -4
Oczekiwane wyjście
[1, 4, 9, 16]
[-1, -2, -3, -4]
['N', 'P', 'N', 'P']

Test 4

Nie uruchomiono
Wejście
6
10 -5 7 -10 0 1
Oczekiwane wyjście
[100, 25, 49, 100, 0, 1]
[-5, -10]
['P', 'N', 'N', 'P', 'P', 'N']

Test 5

Nie uruchomiono
Wejście
2
-9 8
Oczekiwane wyjście
[81, 64]
[-9]
['N', 'P']
Uruchom z własnymi danymi