Python Academy · Pelajaran

deque

Gunakan baris gilir dua hujung yang pantas

Pelajaran 3 daripada 413 langkah

deque ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah itu baris gilir dua hujung

deque (disebut “dek”) ialah baris gilir dua hujung daripada modul collections. Ia menyokong penambahan dan pengeluaran item dengan pantas dari kedua-dua hujung.

Importnya dengan from collections import deque.

from collections import deque
d = deque([1, 2, 3])
print(d)

Mengapa tidak gunakan senarai sahaja

Senarai menjadi perlahan apabila Anda memasukkan atau mengalih keluar item di bahagian hadapan kerana setiap elemen perlu dialihkan. deque melaksanakan operasi di bahagian hadapan dalam masa malar, jadi ia sesuai untuk baris gilir.

from collections import deque
d = deque(['b', 'c'])
d.appendleft('a')
print(d)

Menambah pada kedua-dua hujung

Gunakan .append() untuk menambah pada sebelah kanan dan .appendleft() untuk menambah pada sebelah kiri.

from collections import deque
d = deque()
d.append(1)
d.append(2)
d.appendleft(0)
print(d)

Mengeluarkan dari kedua-dua hujung

.pop() membuang dan mengembalikan elemen paling kanan; .popleft() membuang elemen paling kiri. Kedua-duanya pantas.

from collections import deque
d = deque([10, 20, 30])
print(d.pop())
print(d.popleft())
print(d)

Baris gilir mudah (FIFO)

Untuk tingkah laku masuk dahulu, keluar dahulu, tambah pada sebelah kanan dan gunakan popleft pada sebelah kiri. Elemen keluar mengikut susunan ketibaannya.

from collections import deque
queue = deque()
queue.append('first')
queue.append('second')
print(queue.popleft())
print(queue.popleft())

Deque terhad dengan maxlen

Berikan nilai maxlen untuk mengehadkan saiz. Apabila penuh, penambahan pada satu hujung akan membuang satu elemen dari hujung yang lain secara automatik — sesuai untuk menyimpan sejarah terkini.

from collections import deque
recent = deque(maxlen=3)
for n in [1, 2, 3, 4, 5]:
    recent.append(n)
print(recent)

Memutarkan elemen

.rotate(n) mengalihkan elemen ke kanan sebanyak n langkah; nilai n negatif memutarkannya ke kiri. Elemen akan berpusing semula ke hujung yang bertentangan.

from collections import deque
d = deque([1, 2, 3, 4, 5])
d.rotate(2)
print(d)
d.rotate(-1)
print(d)

Memanjangkan secara pukal

.extend() menambah banyak elemen pada sebelah kanan dan .extendleft() menambahnya pada sebelah kiri. Perhatikan bahawa extendleft menterbalikkan susunan elemen yang anda tambah.

from collections import deque
d = deque([3])
d.extend([4, 5])
d.extendleft([2, 1])
print(d)

Pengindeksan dan panjang

Deque menyokong pengindeksan seperti senarai dan berfungsi dengan len(). Mengakses bahagian tengah lebih perlahan daripada mengakses hujung, jadi utamakan operasi pada hujung.

from collections import deque
d = deque(['a', 'b', 'c'])
print(d[0])
print(d[-1])
print(len(d))

Mengosongkan dan menterbalikkan

.reverse() menterbalikkan deque di tempatnya, manakala .clear() mengosongkannya. Kedua-duanya mengubah deque secara langsung.

from collections import deque
d = deque([1, 2, 3])
d.reverse()
print(d)
d.clear()
print(d)

Mengira kemunculan

Seperti senarai, deque mempunyai .count() untuk mengira kekerapan sesuatu nilai muncul.

from collections import deque
d = deque([1, 2, 2, 3, 2])
print(d.count(2))

Semakan pantas

Anda membina baris gilir FIFO dengan deque. Pasangan kaedah manakah yang memberikan susunan masuk dahulu, keluar dahulu yang betul?

Imbas kembali: deque

Anda telah mempelajari bahawa deque:

  • Menyokong append/pop pantas pada kedua-dua hujung, tidak seperti senarai.
  • Mempunyai appendleft dan popleft untuk sebelah kiri.
  • Boleh dihadkan dengan maxlen untuk menyimpan hanya elemen terkini.
  • Menawarkan rotate, extend, reverse dan count untuk operasi gaya baris gilir.
from collections import deque
q = deque(maxlen=2)
for x in ['a', 'b', 'c']:
    q.append(x)
print(q)
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “deque” percuma?

Ya — teks penuh “deque” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “deque”?

Gunakan baris gilir dua hujung yang pantas Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “deque” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple dan OrderedDict
← Kembali ke Python Academy