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

Tìm giá trị và vị trí trong ma trận

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Nhiệm vụ và dữ liệu

Trên bảng giả `a = [[2, 1, 2], [3, 2, 1]]`, cần liệt kê các giá trị phân biệt theo thứ tự gặp lần đầu và tìm tất cả vị trí của số 2. Kết quả dự kiến: các giá trị `[2, 1, 3]`; số 2 xuất hiện ba lần ở **(hàng 1, cột 1), (hàng 1, cột 3), (hàng 2, cột 2)**. Bài này báo vị trí từ 1 cho người đọc; chỉ số dùng trong mã vẫn từ 0.

Đi qua từng ô, không bỏ lần lặp

```python a = [[2, 1, 2], [3, 2, 1]] gia_tri = [] vi_tri_so_2 = [] for i in range(len(a)): for j in range(len(a[i])): x = a[i][j] if x not in gia_tri: gia_tri.append(x) if x == 2: vi_tri_so_2.append((i + 1, j + 1)) print(gia_tri) print(len(vi_tri_so_2), vi_tri_so_2) ``` Chạy tệp `tim_trong_ma_tran.py` được `[2, 1, 3]` rồi `3 [(1, 1), (1, 3), (2, 2)]`. `if x not in gia_tri` chỉ thêm một lần cho mỗi giá trị; điều kiện `x == 2` ghi **mỗi lần xuất hiện**, nên không dùng `elif` để thay thế. Để tìm số khác, đặt `can_tim = ...` và thay điều kiện bằng `x == can_tim`. Nếu tìm số 9 trong bảng này, danh sách vị trí rỗng và số lần là 0; không báo một vị trí giả. Bài sách dùng hai danh sách song song để đếm theo từng giá trị; ở đây chỉ cần tìm một giá trị nên một danh sách vị trí là đủ.

Bài luyện

Dãy giá trị phân biệt theo thứ tự gặp đầu tiên của `[[2,1,2],[3,2,1]]` là gì?
Chọn một đáp án

Bài luyện

Số 2 có bao nhiêu vị trí trong bảng và ở đâu theo số thứ tự từ 1?
Chọn một đáp án

Bài luyện

Nếu tìm số 9 trong bảng ví dụ, kết quả nào đúng?
Chọn một đáp án

Đang học