depset

Laporkan masalah Lihat sumber

Struktur data khusus yang mendukung operasi penggabungan yang efisien dan memiliki urutan traversal yang ditentukan. Biasanya digunakan untuk mengumpulkan data dari dependensi transitif dalam aturan dan aspek. Untuk informasi selengkapnya, lihat di sini.

Elemen depset harus dapat di-hash dan semua jenis yang sama (seperti yang ditentukan oleh fungsi jenis bawaan(x), tetapi depset bukan hanya kumpulan hash dan tidak mendukung pengujian keanggotaan yang cepat. Jika memerlukan jenis data set umum, Anda dapat menyimulasikannya menggunakan kamus tempat semua kunci dipetakan ke True.

Depset tidak dapat diubah. Instance tersebut harus dibuat menggunakan fungsi konstruktor dan digabungkan atau ditambah dengan depset lainnya melalui argumen transitive.

Parameter order menentukan jenis traversal yang dilakukan untuk mengonversi depset menjadi iterable. Ada empat kemungkinan nilai:

  • "default" (sebelumnya "stable"): Urutan tidak ditentukan (tetapi deterministik).
  • "postorder" (sebelumnya "compile"): Urutan awal dari kiri ke kanan. Presisi ini secara rekursif melintasi semua turunan yang paling kiri, lalu elemen langsung yang paling kiri.
  • "preorder" (sebelumnya "naive_link"): Praorder awal dari kiri ke kanan. Tepatnya, objek ini akan melintasi elemen langsung dari paling kiri terlebih dahulu, lalu secara turunan melintasi turunan paling kiri.
  • "topological" (sebelumnya "link"): Urutan topologi dari root ke daun. Tidak ada jaminan kiri-ke-kanan.

Dua depset hanya dapat digabungkan jika kedua depset memiliki urutan yang sama, atau salah satunya memiliki urutan "default". Dalam kasus terakhir, urutan depset yang dihasilkan akan sama dengan urutan lainnya.

Depset dapat berisi nilai duplikat, tetapi nilai ini akan disembunyikan saat iterasi (menggunakan to_list()). Duplikat dapat mengganggu semantik pengurutan.

Pelanggan

daftar_

list depset.to_list()

Menampilkan daftar elemen, tanpa duplikat, dalam urutan traversal depset. Perhatikan bahwa urutan tidak ditentukan (tetapi deterministik) untuk elemen yang ditambahkan lebih dari sekali ke depset. Urutan juga tidak ditentukan untuk depset yang diurutkan berdasarkan "default", dan untuk elemen depset turunan yang urutannya berbeda dengan depset induk. Daftar ini merupakan salinan; memodifikasinya tidak berpengaruh pada depset dan sebaliknya.