1.4.4. Pobierz n liczb

ZADANIE: Pobierz od użytkownika n liczb i zapisz je w liście. Wydrukuj: elementy listy i ich indeksy, elementy w odwrotnej kolejności, posortowane elementy. Usuń z listy pierwsze wystąpienie elementu podanego przez użytkownika. Usuń z listy element o podanym indeksie. Podaj ilość wystąpień oraz indeks pierwszego wystąpienia podanego elementu. Wybierz z listy elementy od indeksu i do j.

POJĘCIA: lista, metoda, notacja wycinkowa, tupla.

Wszystkie poniższe przykłady warto wykonać w konsoli Pythona. Treść komunikatów w funkcjach print() można skrócić. Można również wpisywać kolejne polecenia do pliku i sukcesywnie go uruchomiać.

Kod nr
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#! /usr/bin/env python3
# -*- coding: utf-8 -*-

from random import randint

ile = int(input("Ile liczb wylosować? "))
lista = []  # pusta lista
for i in range(0, ile):
    lista.append(randint(0, 100))
print(lista)

print("Dodawanie elementów na końcu listy")
for i in range(0, 3):
    liczba = int(input("Podaj liczbę: "))
    lista.append(liczba)
print(lista)

print("Zawartość listy ([indeks] wartość):")
for i, v in enumerate(lista):
    print("[", i, "]", v)

print("Elementy w odwróconym porządku:")
for e in reversed(lista):
    print(e, end=" ")

print()
print("Elementy posortowane rosnąco:")
for e in sorted(lista):
    print(e, end=" ")

print()
e = int(input("Którą liczbę usunąć? "))
lista.remove(e)
print(lista)

print("Wstawianie elementów do listy")
a, i = eval(input("Podaj element i indeks oddzielone przecinkiem: "))
lista.insert(i, a)
print(lista)

print("Wyszukiwanie i zliczanie elementu w liście")
e = int(input("Podaj liczbę: "))
print("Liczba wystąpień: ")
print(lista.count(e))
print("Indeks pierwszego wystąpienia: ")
if lista.count(e):
    print(lista.index(e))
else:
    print("Brak elementu w liście")

print("Pobieramy ostatni element z listy: ")
print(lista.pop())
print(lista)

print("Część listy (notacja wycinkowa):")
i, j = eval(input("Podaj indeks początkowy i końcowy oddzielone przecinkiem: "))
print(lista[i:j])

print()
print("Tupla to lista niemodyfikowalna.")
print("Próba zmiany tupli generuje błąd:")
tupla = tuple(lista)
tupla[0] = 100

Na początku z modułu random importujemy funkcję randint(a, b), która służy do generowania liczb z przedziału [a, b]. Wylosowane liczby dodajemy do listy.

Lista (zob. lista) to sekwencja indeksowanych danych, zazwyczaj tego samego typu. Listę tworzymy ujmując wartości oddzielone przecinkami w nawiasy kwadratowe, np. lista = [1, 'a']. Dostęp do elementów sekwencji uzyskujemy podając nazwę i indeks, np. lista[0]. Elementy indeksowane są od 0 (zera!). Z każdej sekwencji możemy wydobywać fragmenty dzięki notacji wycinkowej (ang. slice, zob. notacja wycinkowa), np.: lista[1:4].

Informacja

Sekwencjami w Pythonie są również napisy i tuple.

Funkcje działające na sekwencjach:

  • len() – zwraca ilość elementów;
  • enumerate() – zwraca obiekt zawierający indeksy i elementy sekwencji;
  • reversed() – zwraca obiekt zawierający odwróconą sekwencję;
  • sorted(lista) – zwraca kopię listy posortowanej rosnąco;
  • sorted(lista, reverse=True) – zwraca kopię listy w odwrotnym porządku;

Lista ma wiele użytecznych metod:

  • .append(x) – dodaje x do listy;
  • .remove(x) – usuwa pierwszy x z listy;
  • .insert(i, x) – wstawia x przed indeksem i;
  • .count(x) – zwraca ilość wystąpień x;
  • .index(x) – zwraca indeks pierwszego wystąpienia x;
  • .pop() – usuwa i zwraca ostatni element listy;
  • .sort() – sortuje listę rosnąco;
  • .reverse() – sortuje listę w odwróconym porządku.

Tupla to niemodyfikowalna lista. Wykorzystywana jest do zapamiętywania i przekazywania wartości, których nie powinno się zmieniać. Tuple tworzymy podając wartości w nawiasach okrągłych, np. tupla = (1, 'a') lub z listy za pomocą funkcji: tuple(lista). Tupla może powstać również poprzez spakowanie wartości oddzielonych przecinkami, np. tupla = 1, 'a'. Próba zmiany wartości w tupli generuje błąd.

Funkcja eval() interpretuje swój argument jako kod Pythona. W instrukcji a, i = eval(input("Podaj element i indeks oddzielone przecinkiem: ")) podane przez użytkownika liczby oddzielone przecinkiem interpretowane są jako tupla, która następnie zostaje rozpakowana, czyli jej elementy zostają przypisane do zmiennych z lewej strony. Przetestuj w konsoli Pythona:

>>> tupla = 2, 6
>>> a, b = tupla
>>> print(a, b)

1.4.4.1. Zadania dodatkowe

Utwórz w konsoli Pythona dowolną listę i przećwicz notację wycinkową. Sprawdź działanie indeksów pustych i ujemnych, np. lista[2:], lista[:4], lista[-2], lista[-2:]. Posortuj trwale dowolną listę malejąco. Utwórz kopię listy posortowaną rosnąco.


Licencja Creative Commons Materiały Python 101 udostępniane przez Centrum Edukacji Obywatelskiej na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowa.

Utworzony:2018-04-12 o 19:31 w Sphinx 1.5.3
Autorzy:Patrz plik “Autorzy”