Trăn chia đôi

Mô-đun bisect cho phép bạn gọi các phương thức khác nhau trong danh sách Python và giúp bạn sắp xếp danh sách. Nó đặc biệt hữu ích nếu bạn muốn sửa đổi các thành phần của danh sách nhưng đồng thời giữ nguyên thứ tự của nó. Chẳng hạn, nếu bạn muốn chèn một phần tử vào danh sách, phương thức bisect sẽ trả về một chỉ mục nơi một phần tử mới có thể được chèn vào theo cách mà sau khi chèn, danh sách sẽ vẫn được sắp xếp. Cú pháp của các phương thức Bisect có thể được hiểu rõ nhất thông qua các ví dụ, một số trong số chúng được đề cập bên dưới

Chèn một phần tử vào danh sách bằng phương pháp Bisect

Hãy xem mẫu mã dưới đây

chia đôi nhập khẩu

l = [2 , 1, 3, 5]
l. sắp xếp []
i = chia đôi. chia đôi [ l, 4]
in [ i ]
l. chèn [ i, 4]
in [ l ]

Câu lệnh đầu tiên nhập mô-đun "chia đôi". Tiếp theo, một đối tượng kiểu danh sách “l” được định nghĩa. Trong câu lệnh tiếp theo, danh sách được sắp xếp bằng cách gọi phương thức “sắp xếp” trên đó. Phương thức bisect được gọi theo danh sách trên dòng tiếp theo. Phương thức chia đôi nhận hai đối số, danh sách mà nó muốn chia đôi và phần tử cần chèn vào danh sách trong khi vẫn giữ nguyên thứ tự sắp xếp. Trong trường hợp này, phương thức bisect được gọi để xác định số chỉ mục “4” nào sẽ được chèn vào danh sách “l” để mọi thứ được giữ theo thứ tự sau khi chèn. Biến “i” giữ các giá trị của chỉ mục được trả về bởi phương thức bisect. Cuối cùng, số 4 được chèn vào danh sách “l” tại chỉ số “i” bằng cách gọi phương thức “insert” trên danh sách

Sau khi chạy mẫu mã trên, bạn sẽ nhận được đầu ra sau

3
[1 , 2 , 3, 4, 5]

Số “3” là chỉ mục trong danh sách gốc nơi số 4 đã được chèn vào. Danh sách chỉ mục luôn bắt đầu bằng số 0, do đó số 4 đã được chèn vào vị trí thứ 4

Lưu ý rằng nếu một số đã tồn tại trong danh sách, phương thức chia đôi sẽ tìm thấy một chỉ mục ở bên phải của số hiện có. Hãy xem mẫu mã dưới đây

chia đôi nhập khẩu

l = [2 , 1, 3, 5, 4]
l. sắp xếp []
i = chia đôi. chia đôi [ l, 4]
in [ i ]
l. chèn [ i, 4]
in [ l ]

Sau khi chạy mẫu mã trên, bạn sẽ nhận được đầu ra sau

4
[1 , 2 , 3, 4, 4, 5]

Mô-đun bisect bao gồm một phương thức khác có tên là “bisect_right” giống với phương thức “bisect”. Bạn có thể sử dụng các phương pháp này thay thế cho nhau

Chèn một phần tử vào danh sách từ bên trái bằng phương pháp Bisect

Hãy xem xét mẫu mã dưới đây

chia đôi nhập khẩu

l = [2 , 1, 3, 5, 4, 4]
l. sắp xếp []
i = chia đôi. bisect_left [ l, 4]
in [ i ]
l. chèn [ i, 4]
in [ l ]

Nó gần giống như ví dụ trước, ngoại trừ việc thay vì phương pháp chia đôi, “bisect_left” hiện được sử dụng. Trong trường hợp phần tử hiện có, phương thức bisect_left tìm chỉ mục ngoài cùng bên trái. Bạn có thể sử dụng chỉ mục này để thêm phần tử mới vào bên trái của phần tử đã khớp

Sau khi chạy mẫu mã trên, bạn sẽ nhận được đầu ra sau

3
[1 , 2 , 3, 4, 4, 4, 5]

Số 4 được thêm vào chỉ số 3, tức là ở vị trí thứ 4 trong danh sách vì chỉ số luôn bắt đầu bằng 0. Thay vào đó, nếu bạn sử dụng phương thức bisect hoặc bisect_right, thì chỉ mục được trả về sẽ khác. Hãy xem mẫu mã dưới đây

chia đôi nhập khẩu

l = [2 , 1, 3, 5, 4, 4]
l. sắp xếp []
i = chia đôi. bisect_right [ l, 4]
in [ i ]
l. chèn [ i, 4]
in [ l ]

Sau khi chạy mẫu mã trên, bạn sẽ nhận được đầu ra sau

5
[1 , 2 , 3, 4, 4, 4, 5]

Sử dụng phương pháp sắp xếp

Mô-đun bisect cũng cung cấp các phương thức “insort” và “insort_left” có thể được sử dụng để chèn trực tiếp các phần tử vào danh sách tại các vị trí thích hợp. Bạn cũng có thể sử dụng phương thức “insort_right” thay cho phương thức isnort. Hãy xem mẫu mã dưới đây

chia đôi nhập khẩu

l = [2 , 1, 3, 5, 4, 4]
l. sắp xếp []
chia đôi. loại [ l, 4]
in [ l ]

Mẫu mã rất giống với các ví dụ trước đó. Phương thức insort có hai đối số. danh sách được sửa đổi và phần tử được chèn vào vị trí thích hợp. Không cần gọi phương thức “chèn” trong danh sách để tự chèn phần tử vào danh sách tại chỉ mục phù hợp

Sau khi chạy mẫu mã trên, bạn sẽ nhận được đầu ra sau

[1 , 2 , 3, 4, 4, 4, 5]

Phương thức sắp xếp chỉ là một phương thức tiện lợi tương đương với câu lệnh Python sau [giả sử “l” là một danh sách được sắp xếp]

l. chèn [ chia đôi. chia đôi [ l, 4], 4]

Vì vậy, về cơ bản, insort tuân theo các quy tắc giống như các phương thức bisect, bisect_right và bisect_left

Phần kết luận

Vì mô-đun bisect cung cấp các phương thức để sửa đổi danh sách bằng cách chèn các phần tử vào trong đó trong khi vẫn giữ thứ tự sắp xếp, nên rất nhiều mã lặp lại sẽ bị loại bỏ khiến bạn có thể phải liên tục sắp xếp danh sách sau khi thực hiện sửa đổi đối với danh sách đó. Theo tài liệu chính thức của Python, phương thức bisect cung cấp các cải tiến so với các phương pháp thường được sử dụng khác, đặc biệt là khi danh sách có số lượng phần tử lớn

Bisect trong Python là gì?

Mô-đun này cung cấp hỗ trợ để duy trì danh sách theo thứ tự được sắp xếp mà không phải sắp xếp danh sách sau mỗi lần chèn . Đối với danh sách dài các mục có thao tác so sánh tốn kém, đây có thể là một cải tiến so với cách tiếp cận phổ biến hơn.

một bisect được sử dụng để làm gì?

để cắt hoặc chia thành hai phần bằng nhau hoặc gần bằng nhau . hình học. để cắt hoặc chia thành hai phần bằng nhau. chia đôi một góc. để giao nhau hoặc chéo. nơi đường ray xe lửa chia đôi đường cao tốc.

Bisect có được cài đặt sẵn trong Python không?

LƯU Ý. Bisect Module được cài đặt sẵn với các bản phân phối Python .

Tìm kiếm chia đôi hoạt động như thế nào trong Python?

Phương pháp chia đôi sử dụng lặp đi lặp lại định lý giá trị trung gian để tìm nghiệm . Cho f[x] là hàm số liên tục và a, b là các giá trị thực vô hướng sao cho a

Chủ Đề