Jaka jest typowa struktura danych wykorzystywana do implementacji wbudowanego typu danych list Pythona?Jaka jest podstawowa struktura danych dla list Pythona?
Odpowiedz
Obiekty listy są zaimplementowane jako tablice . Są one zoptymalizowane do szybkiego wykonywania operacji o stałej długości i ponoszą O (n) kosztów przesuwania pamięci dla operacji wstawiania (0, v) pop (0) i , które zmieniają zarówno rozmiar, jak i położenie reprezentatywnej reprezentacji danych .
Zobacz także: http://docs.python.org/library/collections.html#collections.deque
Btw, uważam, że to ciekawe, że samouczek Python na strukturach danych zaleca stosowanie pop (0), aby symulować kolejkę, ale nie wspomina o O (n) lub opcję deque .
http://docs.python.org/tutorial/datastructures.html#using-lists-as-queues
Bardzo dobry punkt dotyczący samouczka! To powinno zostać naprawione. –
Samouczek istniał długo na długo przed modułem deque, dlatego. Zgłoś to do bugs.python.org, jeśli to możliwe, z poprawką do poprawnego zdania, a samouczek nie będzie już dawał niepoprawnych wskazówek. –
CPython:
typedef struct {
PyObject_VAR_HEAD
/* Vector of pointers to list elements. list[0] is ob_item[0], etc. */
PyObject **ob_item;
/* ob_item contains space for 'allocated' elements. The number
* currently in use is ob_size.
* Invariants:
* 0 <= ob_size <= allocated
* len(list) == ob_size
* ob_item == NULL implies ob_size == allocated == 0
* list.sort() temporarily sets allocated to -1 to detect mutations.
*
* Items must normally not be NULL, except during construction when
* the list is not yet visible outside the function that builds it.
*/
Py_ssize_t allocated;
} PyListObject;
Jak widać na następnej linii, lista jest zadeklarowana jako tablica wskaźników do PyObjects
.
PyObject **ob_item;
W Jython implementation, jest to ArrayList<PyObject>
.
- 1. Jaka jest podstawowa struktura std :: initializer_list?
- 2. Jaka jest podstawowa struktura danych zestawu STL w C++?
- 3. Podstawowa struktura danych [] Drzewo danych w języku Java
- 4. Jaka jest dobra struktura danych dla okresowych lub cyklicznych dat?
- 5. Jaka jest struktura pliku MIDI?
- 6. Jaka jest struktura pamięci cvMat OpenCV?
- 7. Jakiego rodzaju struktura danych jest używana dla niezmiennych map?
- 8. Jaka jest najlepsza struktura danych do automatycznego uzupełniania tekstu?
- 9. Podstawowa struktura prezentacji przy użyciu HTML5 + javascript
- 10. Struktura danych dla gier Kropki i pola
- 11. Jaka jest najlepsza struktura rozwiązania MVC3?
- 12. jaka jest prawidłowa struktura wewnętrzna pliku JAR
- 13. Jaka jest struktura paska nawigacyjnego Bootstrap 3?
- 14. Jaka jest struktura katalogu projektu dla samodzielnej aplikacji Java SE?
- 15. Najlepsza struktura danych dla szeregów czasowych Dane
- 16. Struktura list w pakiecie foreach
- 17. Struktura bazy danych dla struktury danych drzewa
- 18. Struktura danych dla dużej liczby wzorów
- 19. Jaka jest najlepsza realizacja Lista dla dużych list w Javie
- 20. Jaki jest efekt "list = list" w modułach Pythona?
- 21. Pisanie biblioteki, jaka struktura?
- 22. jaka jest podstawowa różnica między jobconf a job?
- 23. Jaka jest odpowiednia struktura danych i schemat bazy danych do przechowywania reguł logicznych?
- 24. Witryna Django, podstawowa gra pythona 2d
- 25. Która struktura danych jest lepsze dla tablicy std ciąg
- 26. Dwukierunkowa struktura danych dla tej sytuacji
- 27. Struktura plików Pythona na GitHub
- 28. Struktura bazy danych dla systemu komentowania strony
- 29. Efektywna struktura danych funkcjonalnych dla skończonych biografii
- 30. Szybsza struktura danych dla wyszukiwania ciągu znaków
dwie opcje: 1) po prostu ciekawość, albo 2) przedwczesne optymalizacji. – flybywire
Ktoś inny zadał mi to pytanie i powiedziałem im, że intuicja polegała na tym, że implementacja była oparta na macierzach, ale nie byłem pewien. To trochę podniosło moją ciekawość, więc postanowiłem zapytać. – Nixuz
Wierzcie lub nie, spędziłem kilka minut na szukaniu odpowiedzi, a nawet gdybym pobrał kod źródłowy, prawdopodobnie nie wiedziałbym, od czego zacząć. Pomyślałem, że ktoś tutaj zna odpowiedź z minimalnym wysiłkiem i wydaje się, że miałem rację. Łatwe powtórzenia dla nich, szybka odpowiedź dla mnie, każdy wygrywa. – Nixuz