Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan modul koleksi untuk operasi struktur data lanjutan dalam Python 3.x

Cara menggunakan modul koleksi untuk operasi struktur data lanjutan dalam Python 3.x

王林
王林asal
2023-07-31 17:44:021344semak imbas

Cara menggunakan modul koleksi untuk operasi struktur data lanjutan dalam Python 3.x

Pengenalan:
Dalam pengaturcaraan Python, selalunya perlu memproses pelbagai struktur data, seperti senarai, kamus, dsb. Walau bagaimanapun, dalam beberapa senario tertentu, kami mungkin memerlukan struktur data yang lebih maju untuk mengatur dan mengurus data dengan lebih baik. Nasib baik, modul koleksi Python menyediakan beberapa struktur data yang berkuasa untuk membantu kami memanipulasi data dengan lebih cekap. Artikel ini akan memperkenalkan struktur data biasa modul koleksi dan cara menggunakannya, dengan contoh kod dilampirkan.

1. deque (baris dua hujung)
Deque dalam modul koleksi ialah barisan dua hujung yang selamat untuk benang, panjang berubah-ubah. Cirinya ialah data boleh dimasukkan dan dipadam pada kedua-dua hujung baris gilir. Kita boleh menggunakan deque untuk melaksanakan baris gilir yang cekap, tindanan dan struktur data lain.

Berikut ialah contoh kod menggunakan deque:

from collections import deque

queue = deque()  # 创建一个空的双端队列

# 入队操作
queue.append('A')
queue.append('B')
queue.append('C')

# 出队操作
print(queue.popleft()) # 输出:A
print(queue.popleft()) # 输出:B

Dalam kod di atas, kita mula-mula mencipta deque kosong, kemudian melakukan operasi enqueue, dan akhirnya melakukan dua operasi dequeue. Kaedah popleft() deque boleh mengeluarkan elemen dari sebelah kiri baris gilir.

2. lalai (kamus lalai)
Dict lalai dalam modul koleksi ialah kamus dengan nilai lalai. Ia membolehkan kami untuk terus mengembalikan nilai lalai apabila mengakses kunci yang tidak wujud tanpa membuang pengecualian KeyError. Ini sangat mudah untuk beberapa senario aplikasi tertentu, seperti kekerapan statistik, pengagregatan kumpulan, dsb.

Berikut ialah contoh kod menggunakan defaultdict:

from collections import defaultdict

# 创建一个默认值为0的字典
frequency = defaultdict(int)

data = ['apple', 'banana', 'apple', 'orange', 'apple', 'banana']

# 统计每个水果的频率
for fruit in data:
    frequency[fruit] += 1

print(frequency)  # 输出:defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'orange': 1})

Dalam kod di atas, kami telah mencipta kekerapan kamus dengan nilai lalai 0. Kemudian, kami melintasi data senarai buah dan menggunakan frekuensi[buah] += 1 untuk mengira kekerapan setiap buah. Jika buah tertentu tidak wujud dalam kamus, nilai lalai 0 akan dikembalikan secara automatik dan dinaikkan.

3. Counter
Counter dalam modul koleksi ialah kelas alat yang digunakan untuk mengira frekuensi. Ia boleh menerima sebarang objek boleh lelar sebagai input dan menghasilkan kamus di mana kekunci mewakili unsur dan nilai mewakili bilangan kejadian unsur tersebut.

Berikut ialah contoh kod menggunakan Counter:

from collections import Counter

data = ['apple', 'banana', 'apple', 'orange', 'apple', 'banana']

# 统计每个水果的频率
frequency = Counter(data)

print(frequency)  # 输出:Counter({'apple': 3, 'banana': 2, 'orange': 1})

# 获取前两个出现频率最高的水果
top2 = frequency.most_common(2)

print(top2)  # 输出:[('apple', 3), ('banana', 2)]

Dalam kod di atas, kami menggunakan Counter untuk mengira kekerapan data senarai buah dan mengeluarkan hasilnya. Pada masa yang sama, kami menggunakan kaedah most_common() untuk mendapatkan dua elemen teratas dengan kekerapan tertinggi.

Kesimpulan:
Modul koleksi Python menyediakan beberapa struktur data yang berkuasa yang boleh membantu kami mengendalikan data dengan lebih cekap. Artikel ini memperkenalkan tiga struktur data yang biasa digunakan: deque, defaultdict dan Counter, dan menunjukkan penggunaannya melalui contoh kod. Saya berharap melalui pengenalan artikel ini, pembaca boleh menggunakan modul koleksi untuk melaksanakan operasi data dengan lebih fleksibel dan meningkatkan kecekapan pengaturcaraan.

Atas ialah kandungan terperinci Cara menggunakan modul koleksi untuk operasi struktur data lanjutan dalam Python 3.x. 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