Pierwszą rzeczą, którą należy zdecydować, jest to, czy struktura danych musi być zmienna czy nie. Jak już wspomniano, listy są zmienne, krotki nie. Oznacza to również, że do kluczy słownika można używać krotek, a listy uczestników nie.
Z mojego doświadczenia wynika, że krotki są zwykle używane tam, gdzie porządek i pozycja są znaczące i spójne. Na przykład, tworząc strukturę danych do wyboru własnej gry przygodowej, zdecydowałem się użyć krotek zamiast list, ponieważ pozycja w kodzie była znacząca. Oto jeden z przykładów z tej struktury danych:
pages = {'foyer': {'text' : "some text",
'choices' : [('open the door', 'rainbow'),
('go left into the kitchen', 'bottomless pit'),
('stay put','foyer2')]},}
Pierwsza pozycja w krotce jest wybór wyświetlane użytkownikowi, gdy grają w grę i drugie miejsce jest kluczem strony, że wybór idzie i to jest spójny dla wszystkich stron.
Krotki są również bardziej wydajne pod względem pamięci niż listy, chociaż nie jestem pewien, kiedy ta korzyść stanie się widoczna.
Zobacz także rozdziały na listach i krotkach w pozycji Think Python.
@Ned, więc chciałbyś zaimplementować klasę punktów. Czy użyjesz krotki lub listy do przechowywania współrzędnych x, y, z? Chciałbyś zmienić wartości (idź z listą), ale jednocześnie kolejność i pozycja są znaczące i spójne (idź z krotką?). – Arlen
Brakuje ci semantyki tego, porównując do niewłaściwej funkcji 'struct'. Krotki są przydatne, gdy _position ma relevance_ - najlepszy przykład pochodzi od współrzędnych w matematyce, która używa nawet tej samej składni: '(x, y, z)' – Izkata
Nigdy wcześniej o tym nie słyszałem, ani nie zauważyłem tego jako wzorca w kodzie (i czytałem dużo kodu Pythona). –