PPy3/Kolekcje: Różnice pomiędzy wersjami

Z Brain-wiki
(Utworzono nową stronę "=Kolekcje= '''Kolekcje''' to są takie typy danych, które składają się z elementów. Szczególnym przypadkiem, omawianym już wcześniej...")
 
Linia 9: Linia 9:
 
Omówimy tu kolejno w skrócie najważniejsze i najbardziej przydatne wg. nas typy kolekcji, z pominięciem tablic NumPy - którym będzie poświęcony osobny rozdział.
 
Omówimy tu kolejno w skrócie najważniejsze i najbardziej przydatne wg. nas typy kolekcji, z pominięciem tablic NumPy - którym będzie poświęcony osobny rozdział.
  
 +
==Listy==
 +
 +
O listach już nieco wiemy. Lista to kolekcja uporządkowana, i modyfikowalna. Elementem listy może być cokolwiek - również inna lista. A nawet ta sama lista - tak, lista może być elementem samej siebie, jednak sztuczka taka nie jest chyba przydatna, choć legalna.
 +
 +
O adresowaniu elementów przez pozycję (lub ''indeks'') oraz o pobieraniu (i podstawianiu do) wycinków już było. Dodamy tu jeszcze parę użytecznych operacji na listach:
 +
 +
<source lang=python>
 +
L = [0, 1, 3]
 +
L.append(5) # dołączamy element do końca, przedłużając listę
 +
→ [0, 1, 3, 5]
 +
L.extend(['a', 'b']) # przedłużamy od razu o całą listę dodatkowych elementów
 +
→ [0, 1, 3, 5, 'a', 'b']
 +
L.insert(2, 'dwa') # pierwszy argument to pozycja, drugi to element wstawiany
 +
→ [0, 1, 'dwa', 3, 5, 'a', 'b']
 +
x = L.pop() # usuwamy ostatni element i zwracamy go jako wynik
 +
→ teraz x == 'b', a L == [0, 1, 'dwa', 3, 5, 'a']
 +
y = L.pop(2) # możemy zrobić to samo, wskazując inną pozycję zamiast ostatniej
 +
→ teraz y == 'dwa', a L == [0, 1, 3, 5, 'a']
 +
L.reverse() # odwrócenie porządku elementów
 +
→ teraz L == ['a', 5, 3, 1, 0]
 +
L.sort() # uporządkowanie elementów listy
 +
→ BŁĄD - nie zadziała, gdyż lista zawiera elementy nieporównywalne (liczby i napis)
 +
L.pop(0) # usuwamy napis, stojący w pozycji 0
 +
L.sort()
 +
→ teraz L == [0, 1, 3, 5]
 +
</source>
 +
 +
Notację postaci <tt>L.append(5)</tt> można czytać tak: zastosuj ''metodę'' obiektu <tt>L</tt> do liczby 5. Metoda jest to operacja związana z pewnym obiektem (w tym przypadku - listą) - tym, do którego odnosi się nazwa stojąca przed kropką. Metodę można uważać za pewien rodzaj funkcji - takiej , która oprócz ewentualnych argumentów umieszczonych w nawiasach po jej nazwie, ,,wie" jeszcze o tym, z jakiego obiektu została wywołana.
  
 
----
 
----

Wersja z 14:02, 8 lip 2016

Kolekcje

Kolekcje to są takie typy danych, które składają się z elementów. Szczególnym przypadkiem, omawianym już wcześniej przy okazji wprowadzenia pętli, są sekwencje - kolekcje uporządkowane. Rozmaite typy kolekcji różnią się sposobem dostępu do elementów, modyfikowalnością - lub przeciwnie, optymalizacją pod względem różnych zastosowań.

  • Szereg typów kolekcji jest ,,wbudowanych" w pythonie - to znaczy, że można z nich swobodnie korzystać bez żadnych dodatkowych zabiegów;
  • niektóre inne są zaimplementowane w modułach biblioteki standardowej - a więc korzystanie z nich wymaga wcześniejszego polecenia import (p. Moduły);
  • ważne dla zastosowań do obliczeń naukowych typy tablicowe są zaimplementowane w bibliotece NumPy, która nie jest częścią biblioteki standardowej, i na ogół np. nie znajdzie się w domyślnym zestawie pakietów typowej dystrybucji Linuxa. Na pewno będzie jednak dostępna jako opcjonalny element instalacji.

Omówimy tu kolejno w skrócie najważniejsze i najbardziej przydatne wg. nas typy kolekcji, z pominięciem tablic NumPy - którym będzie poświęcony osobny rozdział.

Listy

O listach już nieco wiemy. Lista to kolekcja uporządkowana, i modyfikowalna. Elementem listy może być cokolwiek - również inna lista. A nawet ta sama lista - tak, lista może być elementem samej siebie, jednak sztuczka taka nie jest chyba przydatna, choć legalna.

O adresowaniu elementów przez pozycję (lub indeks) oraz o pobieraniu (i podstawianiu do) wycinków już było. Dodamy tu jeszcze parę użytecznych operacji na listach:

L = [0, 1, 3]
L.append(5) # dołączamy element do końca, przedłużając listę
 [0, 1, 3, 5]
L.extend(['a', 'b']) # przedłużamy od razu o całą listę dodatkowych elementów
 [0, 1, 3, 5, 'a', 'b']
L.insert(2, 'dwa') # pierwszy argument to pozycja, drugi to element wstawiany
 [0, 1, 'dwa', 3, 5, 'a', 'b']
x = L.pop() # usuwamy ostatni element i zwracamy go jako wynik
 teraz x == 'b', a L == [0, 1, 'dwa', 3, 5, 'a']
y = L.pop(2) # możemy zrobić to samo, wskazując inną pozycję zamiast ostatniej
 teraz y == 'dwa', a L == [0, 1, 3, 5, 'a']
L.reverse() # odwrócenie porządku elementów
 teraz L == ['a', 5, 3, 1, 0]
L.sort() # uporządkowanie elementów listy
 BŁĄD - nie zadziała, gdyż lista zawiera elementy nieporównywalne (liczby i napis)
L.pop(0) # usuwamy napis, stojący w pozycji 0
L.sort()
 teraz L == [0, 1, 3, 5]

Notację postaci L.append(5) można czytać tak: zastosuj metodę obiektu L do liczby 5. Metoda jest to operacja związana z pewnym obiektem (w tym przypadku - listą) - tym, do którego odnosi się nazwa stojąca przed kropką. Metodę można uważać za pewien rodzaj funkcji - takiej , która oprócz ewentualnych argumentów umieszczonych w nawiasach po jej nazwie, ,,wie" jeszcze o tym, z jakiego obiektu została wywołana.


poprzednie | strona główna | dalej

RobertJB (dyskusja) 16:06, 5 lip 2016 (CEST)