btvn.vn
Tìm kiếm Đăng nhập

Xóa an toàn và tìm mẫu trong danh sách

Lưu trên thiết bị này
Danh sách và xâu trong Python · Chọn bài khác

Xóa rồi kiểm lại đúng vị trí

Khi xóa `A[i]`, phần tử sau nó chuyển về đúng chỉ số i. Vì vậy nếu vừa xóa vừa tăng i, có thể bỏ qua một phần tử âm đứng ngay sau. Mã sau chỉ tăng i khi **không xóa**: ```python A = [4, -1, -2, 5] i = 0 while i < len(A): if A[i] < 0: del A[i] else: i = i + 1 print(A) ``` Kết quả là `[4, 5]`. Sau khi xóa -1, -2 dồn về cùng vị trí nên được xét ngay lượt kế. Với `A = []`, điều kiện sai từ đầu và chương trình in `[]`. Bài xét danh sách số mẫu, không xóa dữ liệu học viên thật.

Bài luyện

Sau khi xóa phần tử âm tại chỉ số i, vì sao mã trong bài chưa tăng i ngay?
Chọn một đáp án

Bài luyện

Với `A = [4, -1, -2, 5]`, mã xóa số âm trong bài in gì?
Chọn một đáp án

Mẫu dài ba có thể bắt đầu ở vị trí cuối hợp lệ

Muốn tìm mẫu `[1, 2, 3]` trong A, vị trí bắt đầu cuối cùng là `len(A) - 3`. Vì vậy vùng xét phải **gồm** vị trí đó: `range(len(A) - 2)` (với list đủ ba phần tử) hoặc vòng `while i <= len(A) - 3`. Nếu dùng dấu `< len(A) - 3`, trường hợp mẫu nằm sát cuối sẽ bị bỏ sót. ```python A = [9, 1, 2, 3] vi_tri = -1 for i in range(len(A) - 2): if A[i:i + 3] == [1, 2, 3]: vi_tri = i break print(vi_tri) ``` Mã in `1`. Thử `A = [1, 2, 3]` in 0; `A = [9, 8]` hoặc `[]` in -1. `-1` ở đây là **giá trị báo chưa tìm thấy** do chương trình đặt, không dùng làm chỉ số truy cập trong bài này.

Bài luyện

Với `A = [9, 1, 2, 3]`, mã tìm mẫu trong bài in vị trí nào?
Chọn một đáp án

Bài luyện

Nếu A chỉ là `[1, 2, 3]`, mã trong bài có xét vị trí 0 không?
Chọn một đáp án

Đang học