Rodzaje struktur danych w Pythonie: lista, krotka, zestawy i słownik

Opublikowany: 2020-12-30

Python jest ulubionym językiem wszystkich entuzjastów Data Science. Wszechstronny charakter i łatwe do zrozumienia podejście pomagają programistom bardziej skoncentrować się na zrozumieniu trendów w danych i uzyskiwaniu znaczących spostrzeżeń, zamiast poświęcać czas na naprawienie drobnego błędu średnika lub zamknięcie narzutu. Python, który jest najpopularniejszym językiem wśród początkujących, jest szybko dostosowywany, dlatego ważne staje się dobre zrozumienie tego języka.

Struktury danych to podstawowa koncepcja w każdym języku programowania. Określa, w jaki sposób zmienne i dane mogą być przechowywane i pobierane z pamięci w najlepszy możliwy sposób, w zależności od typu danych. Definiuje również relacje między zmiennymi, co pomaga w decydowaniu o operacjach i funkcjach, które należy nad nimi wykonać. Rozumiem, jak Python zarządza danymi.

Spis treści

Rodzaje struktury danych w Pythonie

1. Lista

Jest to najprostsza i powszechnie używana struktura danych w programowaniu w Pythonie. Jak sama nazwa wskazuje, jest to zbiór przedmiotów do przechowywania. Przechowywane elementy mogą być dowolnego typu liczbowego, łańcuchowego, logicznego, obiektów itp., co czyni je heterogenicznymi. Oznacza to, że lista może zawierać dane dowolnego typu i możemy iterować po tej liście przy użyciu dowolnego typu pętli.

Przechowywane elementy są zwykle powiązane z indeksem, który definiuje pozycję na liście. Numeracja indeksów zaczyna się od zera. Lista jest zmienna, co oznacza, że ​​elementy na liście można dodawać, usuwać lub zmieniać nawet po ich zdefiniowaniu. Ta struktura danych przypomina tablice w innych językach, które są zwykle jednorodne, co oznacza, że ​​w tablicach można przechowywać tylko jeden typ danych. Niektóre podstawowe operacje na listach są następujące:

  • Aby zadeklarować listę w Pythonie, umieść ją w nawiasach kwadratowych:

sample_list = ['upGrad', '1', 2]

  • Aby zainicjować pustą listę:

przykładowa_lista = lista()

  • Dodaj elementy do listy:

sample_list.append('nowy_element')

  • Usuń elementy z listy:

sample_list.remove(<nazwa elementu>) usuwa określony element

del sample_list[<numer indeksu elementu>] usuwa element o tym indeksie

sample_list.pop(<numer indeksu elementu>) usuwa element tego indeksu i zwraca usunięty element

  • Aby zmienić element pod dowolnym indeksem:

sample_list[<dowolny indeks>] = nowa pozycja

  • Krojenie : jest to ważna funkcja, która umożliwia odfiltrowanie elementów na liście w określonych przypadkach. Weź pod uwagę, że potrzebujesz tylko określonego zakresu wartości z listy, możesz to po prostu zrobić przez:

sample_list[start: stop: step] gdzie step definiuje przerwę między elementami i domyślnie jest to 1.

Dowiedz się więcej: Jak stworzyć idealne drzewo decyzyjne

2. Krotka

Jest to kolejna struktura danych, która sekwencyjnie przechowuje dane, co oznacza, że ​​dodawane dane pozostają uporządkowane, podobnie jak listy. Podążając tymi samymi liniami, Tuple może również przechowywać heterogeniczne dane, a indeksowanie pozostaje takie samo.

Główna różnica między nimi polega na tym, że elementy przechowywane w krotce są niezmienne i nie można ich zmienić po zdefiniowaniu. Oznacza to, że nie możesz dodawać nowych elementów, zmieniać istniejących ani usuwać elementów z krotki. Elementy można z niego odczytać tylko poprzez indeksowanie lub rozpakowywanie bez wymiany.

To sprawia, że ​​krotka jest szybka w porównaniu z listą pod względem tworzenia. Krotka jest przechowywana w pojedynczym bloku pamięci, ale lista wymaga dwóch bloków, jednego o stałym rozmiarze, a drugiego o zmiennym rozmiarze do przechowywania danych. Należy preferować krotkę nad listą, gdy użytkownik jest pewien, że elementy, które mają być przechowywane, nie wymagają dalszej modyfikacji. Kilka rzeczy do rozważenia podczas używania krotki:

  • Aby zainicjować pustą krotkę:

sample_tuple = krotka()

  • Aby zadeklarować krotkę, umieść elementy w okrągłych nawiasach:

sample_tuple = ('upGrad', 'Python', 'ML', 23432)

  • Aby uzyskać dostęp do elementów krotki:

sample_tuple[<indeks_num>]

3 zestawy

W matematyce zbiór to dobrze zdefiniowany zbiór unikalnych elementów, które mogą być ze sobą powiązane lub nie. W krotce i liście można bezbłędnie przechowywać wiele zduplikowanych elementów, ale struktura zestawu danych przyjmuje tylko unikalne elementy.

Elementy zestawu są przechowywane w sposób nieuporządkowany, co oznacza, że ​​elementy są losowo przechowywane w zestawie i nie ma określonej pozycji ani obsługiwanego indeksu, ani krojenie w zestawie nie jest dozwolone. Zbiór sam w sobie jest zmienny, ale elementy muszą być niezmienne, ponieważ sposób działania zestawów polega na ich mieszaniu iw tym procesie można zahaszować tylko elementy niezmienne.

Elementy można dodawać lub usuwać z zestawu, ale nie można ich zmieniać, ponieważ nie ma koncepcji indeksowania, a zatem elementy można zmieniać. Podobnie jak w matematyce, tutaj również można wykonać wszystkie operacje na zbiorach, takie jak suma, przecięcie, różnica, rozłączność. Zobaczmy, jak to zaimplementować:

  • Aby zainicjować pusty zestaw:

zestaw_próbek = zestaw()

  • Dodaj elementy do zestawu:

sample_set.add(item) Dodaje pojedynczy element do zestawu

sample_set.update(items) To może dodać wiele pozycji za pomocą listy, krotki lub innego zestawu

  • Usuń elementy z zestawu:

sample_set.discard(item) Usuwa element bez ostrzeżenia, jeśli element nie występuje

sample_set.remove(item) Zgłasza błąd, jeśli element do usunięcia nie jest obecny.

  • Operacje na zestawach (Załóżmy, że zainicjowano dwa zestawy: A i B):

| B lub A.union(B): Działanie unijne

A & B lub A.intersection(B): Operacja na skrzyżowaniu

A – B lub A.difference(B): Różnica dwóch zestawów

A ^ B lub A.symmetric_difference(B) : Symetryczna różnica zbiorów

Sprawdź: Ramki danych w Pythonie

4. Słownik

Jest to najbardziej użyteczna struktura danych w Pythonie, która umożliwia przechowywanie elementów danych w postaci pary klucz-wartość. Klucz musi być wartością niezmienną, a wartość może być elementem zmiennym. Ta koncepcja jest podobna do rzeczywistego słownika, w którym słowa są kluczami, a ich znaczenia są wartościami. Słownik przechowuje te pary w sposób nieuporządkowany, dlatego nie ma pojęcia o indeksie w tej strukturze danych. Kilka ważnych rzeczy z tym związanych:

  • Aby zainicjować pusty słownik:

sample_dict = dict()

  • Aby dodać elementy do słownika:

sample_dict[klucz] = wartość

Innym sposobem na to jest sample_dict = {klucz: wartość}

Jeśli wydrukujesz ten słownik, wynik będzie następujący: {'klucz1': wartość, 'klucz2': wartość … }

  • Aby uzyskać klucze i wartości słownika:

sample_dict.keys(): zwraca listę kluczy

sample_dict.values(): zwraca listę wartości

sample_dict.items(): zwraca obiekt widoku par klucz-wartość jako krotkę na liście

Ucz się kursów nauki o danych z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wniosek

Ważne jest, aby uchwycić podstawową wiedzę o strukturach danych w Pythonie. Będąc w branży danych, różne struktury danych mogą pomóc w lepszym obejściu podstawowych algorytmów. Dzięki temu programista jest bardziej świadomy najlepszych praktyk kodowania, aby skutecznie uzyskiwać wyniki. Wykorzystanie każdej struktury danych jest w dużym stopniu oparte na sytuacji i wymaga rygorystycznej praktyki.

Jakie znaczenie mają struktury danych?

Struktury danych są jednym z podstawowych filarów każdego języka programowania. Określają, w jaki sposób dane będą przechowywane i przetwarzane w pamięci. Koncepcje struktur danych pozostają takie same bez względu na język programowania, o którym mówimy.

Najpopularniejsze struktury danych to tablice, listy, stosy, kolejki, drzewa, hashmapy i wykresy. Niektóre z nich są wbudowane, inne muszą być zaimplementowane przez użytkownika za pomocą predefiniowanych struktur danych.

Jak mogę rozwinąć silne zrozumienie struktur danych?

Podstawowe koncepcje implementacji i działania dowolnej struktury danych powinny być pierwszym krokiem, który należy wykonać. Po zapoznaniu się z koncepcjami teoretycznymi i pracą, możesz zacząć od części kodowania.

Zawsze powinieneś badać złożoność czasową i przestrzenną dowolnego algorytmu lub struktury danych, nad którą pracujesz. To da ci właściwy wgląd w koncepcję i będziesz w stanie rozwiązać każde pytanie, które wymaga tej konkretnej struktury danych.

Kiedy preferowana jest lista Pythona do przechowywania danych?

Lista może służyć do przechowywania różnych wartości z różnymi typami danych i można do niej uzyskać dostęp tylko za pomocą ich odpowiednich indeksów. Gdy trzeba wykonać operacje matematyczne na elementach, można użyć listy, ponieważ umożliwia ona matematyczną obsługę elementów bezpośrednio.

Ponieważ listę można zmieniać, można jej użyć do przechowywania danych, gdy nie masz pewności co do liczby elementów, które mają być przechowywane.