Rumah >pembangunan bahagian belakang >Tutorial Python >Struktur Data Isih dalam Python

Struktur Data Isih dalam Python

DDD
DDDasal
2024-12-31 06:51:101013semak imbas

Sorted Data Structures in Python

Struktur data yang diisih memainkan peranan penting dalam mengoptimumkan operasi carian, sisipan dan pemadaman sambil mengekalkan susunan. Python menyediakan pelbagai alat dan perpustakaan untuk bekerja dengan struktur sedemikian, menawarkan penyelesaian yang cekap untuk pelbagai masalah dunia sebenar. Kami akan meliputi yang berikut:

  • Timbunan.
  • Senarai diisih.
  • Kamus yang diisih.
  • Set diisih.

modul heapq

Untuk pelaksanaan struktur data timbunan yang teguh (khususnya timbunan min), perpustakaan standard Python menyediakan sokongan terbina dalam. Modul heapq menyediakan pelaksanaan barisan keutamaan berasaskan timbunan. Ia menggunakan timbunan binari untuk mengekalkan susunan separa, menjadikannya sesuai untuk senario yang memerlukan akses berulang kepada elemen terkecil (atau terbesar).

Contoh:

import heapq

heap = [3, 1, 4]
heapq.heapify(heap)
heapq.heappush(heap, 2)
print(heap)  # Output: [1, 2, 4, 3]

smallest = heapq.heappop(heap)
print(smallest)  # Output: 1

Rujuk dokumentasi rasmi untuk senarai komprehensif operasi yang tersedia dan contoh tambahan.

Modul sortedcontainers

Modul sortedcontainers menyediakan struktur data diisih dinamik yang melaraskan secara automatik apabila elemen ditambah atau dialih keluar. Perpustakaan ini sangat cekap dan mudah digunakan.

Senarai Isih:

Mengekalkan senarai diisih dengan susunan dinamik.

from sortedcontainers import SortedList

sl = SortedList([3, 1, 4])
sl.add(2)
print(sl)  # Output: [1, 2, 3, 4]

Ia juga menerima parameter utama, serupa dengan yang digunakan dalam fungsi sorted().

from sortedcontainers import SortedList
from operator import neg

sl = SortedList([3, 1, 4], key=neg)
print(sl)  # Output: [4, 3, 1]

Nota: SortedList menyokong hampir semua kaedah jujukan boleh ubah kecuali beberapa kaedah yang tidak disokong dan akan menimbulkan ralat yang tidak dilaksanakan.

SortedDict:

Kamus dengan kunci diselenggara dalam susunan yang disusun. Reka bentuk dict diisih adalah mudah: dict diisih mewarisi daripada dict ke menyimpan item dan mengekalkan senarai kunci yang diisih.

Kunci dict yang diisih mestilah boleh dicincang dan boleh dibandingkan. Cincang dan jumlah pesanan kunci tidak boleh berubah semasa ia disimpan dalam dict yang diisih.

from sortedcontainers import SortedDict

sd = SortedDict({"b": 2, "a": 1})
sd["c"] = 3
print(sd)  # Output: {'a': 1, 'b': 2, 'c': 3}

Set Sorted:

Set yang memastikan elemennya diisih.

from sortedcontainers import SortedSet

ss = SortedSet([3, 1, 1, 4])
ss.add(2)
print(ss)  # Output: SortedSet([1, 2, 3, 4])

Seperti SortedList, SortedSet juga menerima parameter utama yang boleh digunakan dengan cara yang sama.


Tukar ganti bagi Struktur Data Isih

Walaupun struktur data yang diisih menawarkan kelebihan yang ketara, ia datang dengan pertukaran:

  • Overhed Sisipan/Pemadaman: Mengekalkan ketertiban semasa operasi ini boleh meningkatkan kos pengiraan berbanding struktur yang tidak diisih.
  • Memori Overhed: Sesetengah pelaksanaan mungkin menggunakan memori tambahan untuk mengindeks atau mengekalkan susunan.

Kesimpulan

Struktur data yang diisih ialah alat yang sangat diperlukan untuk mengoptimumkan aplikasi yang memerlukan penyelenggaraan pesanan dinamik. Walaupun pembangun sepatutnya dapat melaksanakan struktur data ini dengan mudah, adalah bagus untuk menyediakan pelaksanaan yang mantap ini yang boleh digunakan terus-menerus tanpa mengalami mimpi ngeri tentang kotak sudut dalam perkhidmatan yang digunakan dalam pengeluaran. Pustaka terbina dalam Python dan modul pihak ketiga seperti sortedcontainers menyediakan penyelesaian yang serba boleh dan cekap untuk pelbagai masalah. Dengan memahami kekuatan dan pertukaran mereka, anda boleh memilih alatan yang betul untuk membina aplikasi yang berprestasi dan berskala.

Atas ialah kandungan terperinci Struktur Data Isih dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn