Ngôn ngữ lập trình Python có bốn kiểu dữ liệu tập hợp- danh sách, tuple, bộ và từ điển. Nhưng python cũng đi kèm với một mô-đun tích hợp được gọi là bộ sưu tập có cấu trúc dữ liệu chuyên biệt về cơ bản khắc phục những thiếu sót của bốn loại dữ liệu. Trong blog này, chúng ta sẽ đi chi tiết từng cấu trúc dữ liệu chuyên biệt đó. Sau đây là các chủ đề được bao phủ trong blog này
Bộ sưu tập trong Python là gì?
Các bộ sưu tập trong python về cơ bản là các kiểu dữ liệu chứa, cụ thể là danh sách, bộ, bộ, từ điển. Chúng có những đặc điểm khác nhau dựa trên khai báo và cách sử dụng
Một danh sách được khai báo trong dấu ngoặc vuông, nó có thể thay đổi, lưu trữ các giá trị trùng lặp và các phần tử có thể được truy cập bằng chỉ mục
Một bộ dữ liệu được sắp xếp theo thứ tự và không thay đổi về bản chất, mặc dù các mục nhập trùng lặp có thể ở đó bên trong một bộ dữ liệu
Một tập hợp không có thứ tự và được khai báo trong ngoặc vuông. Nó không được lập chỉ mục và cũng không có các mục trùng lặp
Một từ điển có các cặp giá trị khóa và có thể thay đổi về bản chất. Chúng tôi sử dụng dấu ngoặc vuông để khai báo một từ điển
Đây là các loại dữ liệu vùng chứa tích hợp cho mục đích chung của python. Nhưng như chúng ta đều biết, trăn luôn có một chút gì đó bổ sung để cung cấp. Nó đi kèm với một mô-đun python có tên là bộ sưu tập có cấu trúc dữ liệu chuyên biệt
Bộ sưu tập chuyên ngành Cấu trúc dữ liệu
Mô-đun bộ sưu tập trong python triển khai các cấu trúc dữ liệu chuyên biệt cung cấp thay thế cho các loại dữ liệu vùng chứa tích hợp sẵn của python. Sau đây là các cấu trúc dữ liệu chuyên biệt trong mô-đun bộ sưu tập
- tên tuple[]
- deque
- bản đồ chuỗi
- Phản đối
- Ra lệnhDict
- mặc định
- Người dùngDict
- Danh sách người dùng
- chuỗi người dùng
tên tuple[]
Nó trả về một bộ với một mục nhập được đặt tên, có nghĩa là sẽ có một tên được gán cho mỗi giá trị trong bộ. Nó khắc phục vấn đề truy cập các phần tử bằng cách sử dụng các giá trị chỉ mục. Với namedtuple[ ], việc truy cập các giá trị này trở nên dễ dàng hơn vì bạn không cần phải nhớ các giá trị chỉ mục để nhận các phần tử cụ thể
Làm thế nào nó hoạt động?
Trước hết, bạn phải nhập mô-đun bộ sưu tập, nó không yêu cầu cài đặt
from collections import namedtuple
Nhìn vào đoạn mã sau để hiểu cách bạn có thể sử dụng têntuple
a = namedtuple['courses' , 'name , tech'] s = a['data science' , 'python'] print[s] #the output will be courses[name='python' , tech='python']
Làm cách nào để tạo một tên tuple bằng danh sách?
s._make[['data science' , 'python']] #the output will be same as before.
deque
deque phát âm là ‘deck’ là một danh sách được tối ưu hóa để thực hiện thao tác chèn và xóa dễ dàng
Làm thế nào nó hoạt động?
#creating a deque from collections import deque a = ['d' , 'u' , 'r' , 'e' , 'k'] a1 = deque[a] print[a1] #the output will be deque[[ 'd' , 'u' , 'r' , 'e' , 'k' ]]
Bây giờ, hãy xem cách chúng tôi sẽ chèn và xóa các mục khỏi deque
a1.append['a'] print[a1] # the output will be deque[[ 'd' , 'u' , 'r' , 'e' , 'k' , 'a' ]] a1.appendleft['e'] print[a1] # the output will be deque[['e' , 'd' , 'u' , 'r' , 'e' , 'k' , 'a' ]]
Rõ ràng, việc chèn một thành phần được tăng cường bằng cách sử dụng deque, bạn cũng có thể xóa các thành phần
a1.pop[] print[a1] #the output will be deque[[ 'e' , 'd' , 'u' , 'r' , 'e' , 'k' ]] a1.popleft[] print[a1] #the output will be deque[[ 'd' , 'u' , 'r' , 'e' , 'k' ]]
Tương tự như các kiểu dữ liệu có sẵn, có một số thao tác khác mà chúng ta có thể thực hiện trên deque. Giống như đếm các phần tử hoặc xóa deque, v.v.
Bản Đồ Chuỗi
Nó là một từ điển giống như lớp có thể tạo một chế độ xem nhiều ánh xạ. Về cơ bản, nó trả về một danh sách một số từ điển khác. Giả sử bạn có hai từ điển với một số cặp giá trị khóa, trong trường hợp này, ChainMap sẽ tạo một danh sách có cả hai từ điển trong đó
Làm thế nào nó hoạt động?
from collections import ChainMap a = { 1: 'edureka' , 2: 'python'} b = {3: 'data science' , 4: 'Machine learning'} c = ChainMap[a,b] print[c] #the output will be ChainMap[{1: 'edureka' , 2: 'python'} , {3: 'data science' , 4: 'Machine learning'}]
Để truy cập hoặc chèn các phần tử, chúng tôi sử dụng các phím làm chỉ mục. Nhưng để thêm một từ điển mới trong ChainMap, chúng tôi sử dụng phương pháp sau
a1 = { 5: 'AI' , 6: 'neural networks'} c1 = c.new_child[a1] print[c1] #the output will be ChainMap[{1: 'edureka' , 2: 'python'} , {3: 'data science' , 4: 'Machine learning'}, { 5: 'AI' , 6: 'neural networks'}]
Phản đối
Nó là một phân lớp từ điển được sử dụng để đếm các đối tượng có thể băm
Làm thế nào nó hoạt động?
________số 8_______Ngoài các thao tác bạn có thể thực hiện trên bộ đếm từ điển còn 3 thao tác nữa mà chúng ta có thể thực hiện
- hàm phần tử – Nó trả về một danh sách chứa tất cả các phần tử trong Bộ đếm
- Most_common[] – Nó trả về một danh sách được sắp xếp với số lượng của từng phần tử trong Bộ đếm
- Subtract[] – Nó lấy một đối tượng có thể lặp lại làm đối số và khấu trừ số phần tử trong Bộ đếm
Ra lệnhDict
Nó là một phân lớp từ điển ghi nhớ thứ tự các mục được thêm vào. Về cơ bản, ngay cả khi bạn thay đổi giá trị của khóa, vị trí sẽ không bị thay đổi do thứ tự chèn khóa trong từ điển
Làm thế nào nó hoạt động?
from collections import OrderedDict od = OrderedDict[] od[1] = 'e' od[2] = 'd' od[3] = 'u' od[4] = 'r' od[5] = 'e' od[6] = 'k' od[7] = 'a' print[od] #the output will be OrderedDict[[1 , 'e'], [2 , 'd'] , [3 , 'u'], [4 , 'r'], [5 , 'e'], [6 , 'k'], [7 , 'a']]
Không quan trọng giá trị nào được chèn vào từ điển, OrderedDict ghi nhớ thứ tự mà nó được chèn và nhận đầu ra tương ứng. Ngay cả khi chúng ta thay đổi giá trị của khóa. Giả sử, nếu chúng ta thay đổi giá trị khóa 4 thành 8, thứ tự sẽ không thay đổi ở đầu ra
mặc định
Nó là một phân lớp từ điển gọi một hàm xuất xưởng để cung cấp các giá trị còn thiếu. Nói chung, nó không đưa ra bất kỳ lỗi nào khi một giá trị khóa bị thiếu được gọi trong từ điển
Làm thế nào nó hoạt động?
a = namedtuple['courses' , 'name , tech'] s = a['data science' , 'python'] print[s] #the output will be courses[name='python' , tech='python']0
Người dùngDict
Lớp này hoạt động như một trình bao bọc xung quanh các đối tượng từ điển. Nhu cầu về lớp này xuất phát từ sự cần thiết phải phân lớp trực tiếp từ dict. Làm việc với lớp này trở nên dễ dàng hơn khi từ điển cơ bản trở thành một thuộc tính
a = namedtuple['courses' , 'name , tech'] s = a['data science' , 'python'] print[s] #the output will be courses[name='python' , tech='python']1
Lớp này mô phỏng một từ điển. Nội dung của thể hiện được lưu giữ trong một từ điển thông thường có thể được truy cập bằng thuộc tính 'dữ liệu' của lớp UserDict. Tham chiếu của dữ liệu ban đầu không được lưu giữ để sử dụng cho các mục đích khác
Danh sách người dùng
Lớp này hoạt động như một lớp bao quanh các đối tượng danh sách. Nó là một lớp cơ sở hữu ích cho các danh sách khác như các lớp có thể kế thừa từ chúng và ghi đè các phương thức hiện có hoặc thậm chí thêm một số phương thức mới.
Sự cần thiết của lớp này xuất phát từ sự cần thiết phải phân lớp trực tiếp từ danh sách. Làm việc với lớp này trở nên dễ dàng hơn khi danh sách cơ bản trở thành một thuộc tính
a = namedtuple['courses' , 'name , tech'] s = a['data science' , 'python'] print[s] #the output will be courses[name='python' , tech='python']2
Đây là lớp mô phỏng một danh sách. Nội dung của ví dụ được lưu giữ trong một danh sách thông thường. Các lớp con của danh sách được dựa vào để cung cấp một hàm tạo có thể được gọi mà không có hoặc có một tranh chấp
Trong blog này, chúng ta đã tìm hiểu về các cấu trúc dữ liệu chuyên biệt đi kèm với mô-đun bộ sưu tập trong python. Tối ưu hóa dẫn đến hiệu suất tốt hơn và kết quả nâng cao. Điều tương tự cũng áp dụng cho sự nghiệp và kỹ năng của chúng ta. Nếu bạn muốn bắt đầu quá trình học và tối ưu hóa cách bạn tiếp nhận lập trình, hãy đăng ký tham gia chương trình cấp chứng chỉ khóa học Python trực tuyến của Edureka và giải phóng những khả năng vô tận với python