Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hàm map() Python: Tìm hàng có nhiều số 1 nhất trong ma trận

Trong hướng dẫn này, chúng ta dùng hàm map() để tìm hàng (row) chứa nhiều số 1 nhất trong ma trận.

Ví dụ

matrix = [
    [0, 0, 1],
    [1, 1, 1],
    [1, 1, 0]
]
# Hàng index 1 có 3 số 1 (nhiều nhất)

Code

matrix = [
    [0, 0, 1],
    [1, 1, 1],
    [1, 1, 0]
]

def count_ones(row):
    """Đếm số 1 trong một hàng"""
    count = 0
    for val in row:
        if val == 1:
            count += 1
    return count

# map() áp dụng count_ones cho từng hàng
ones_count = list(map(count_ones, matrix))
print("Số 1 mỗi hàng:", ones_count)  # [1, 3, 2]

# Tìm index của max
max_index = ones_count.index(max(ones_count))
print(f"Hàng có nhiều 1 nhất: index {max_index}")

Kết quả

Số 1 mỗi hàng: [1, 3, 2]
Hàng có nhiều 1 nhất: index 1

Giải thích

  • map(func, iterable) áp dụng func cho từng phần tử, trả về iterator
  • Chuyển thành list để dùng index() và max()
  • Có thể dùng lambda: map(lambda row: row.count(1), matrix)

Mở rộng: Dùng NumPy (hiệu quả hơn cho ma trận lớn)

import numpy as np
matrix = np.array([[0,0,1], [1,1,1], [1,1,0]])
row_sums = matrix.sum(axis=1)
print(np.argmax(row_sums))  # 1