icantech
Lập trình Python
2372
30/10/2023

Mảng 2 chiều là gì? Tìm hiểu về mảng 2 chiều trong Python

Các kiểu dữ liệu hay cấu trúc dữ liệu là những thành phần không thể thiếu trong bất kỳ ngôn ngữ lập trình nào. Một trong những kiểu dữ liệu phổ biến nhất chính là mảng - một cấu trúc dữ liệu có thể lưu trữ được nhiều giá trị trong một biến. Cùng ICANTECH tìm hiểu về mảng 2 chiều trong Python và các cách sử dụng mảng này nhé!

1. Tìm hiểu về mảng 2 chiều Python

1.1. Khái niệm mảng 2 chiều

Mảng hay list là một trong những kiểu dữ liệu được sử dụng nhiều nhất trong quá trình làm việc với Python. Một danh sách có thể chứa nhiều phần tử có các kiểu dữ liệu khác nhau. Các phần tử trong danh sách được gọi là mảng 2 chiều hay danh sách hai chiều.

Ví dụ: 1 danh sách hai chiều

ex = [[0,1],

[1,3,4],

[5,2,7,8]]

print(ex)

Kết quả:

[[0, 1], [1, 3, 4], [5, 2, 7, 8]]

Một điểm đặc biệt hơn, nếu các phần tử con (mảng con) trong một danh sách có độ dài bằng nhau thì mảng đó được gọi là một ma trận.

Ví dụ:

ma-tran
  • Hình ảnh được lưu trữ dưới dạng list 2 chiều.
  • Mỗi điểm ảnh được biểu diễn bởi một giá trị màu.
  • Kích thước của hình ảnh được biểu diễn bởi số hàng và số cột.

1.2. Tính chất mảng 2 chiều Python

List 2 chiều hay mảng 2 chiều có:

  • Mỗi phần tử là một mảng khác (gọi là danh sách con hoặc mảng con).
  • Các danh sách con này có thể có số lượng phần tử khác nhau.

Có thể biểu diễn ma trận bằng bảng:

ma-tran

2. Một số thao tác với mảng 2 chiều

2.1. Cách khai báo mảng 2 chiều

Khai báo trực tiếp

Nếu đã biết trước độ dài mảng và các phần tử trong mảng ta có thể khai báo trực tiếp mảng 2 chiều.

Ví dụ:

  • ex = [[0,1], 
  •       [1,3,4], 
  •       [5,2,7,8]]

Khai báo từng mảng con

  • ex1 = [0,1]
  • ex2 = [1,3,4]
  • ex3 = [5,2,7,8]
  • ex = [list1, list2, list3]

2.2. Truy xuất phần tử trong mảng 2 chiều

Để truy xuất mỗi phần tử, sử dụng cú pháp: tên_danh_sách[i][j]

Trong đó: 

  • i là chỉ số phần tử của danh sách (chỉ số hàng).
  • j là chỉ số của phần tử của danh sách ở dòng i (chỉ số cột).

Ví dụ:

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

[6,7,8,9,10],

[11,12,13,14,15]]

print(ls1[0][1])

print(ls1[1][3])

print(ls1[2][2])

ma-tran

Kết quả:

2

9

13

Để truy xuất một hàng (danh sách con) trong mảng 2 chiều ta chỉ cần sử dụng cú pháp tên_danh_sách[i]

Trong đó: i là chỉ số hàng cần lấy của danh sách

Ví dụ:

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

[6,7,8,9,10],

[11,12,13,14,15]]

print(ex[1])

Kết quả:

[6, 7, 8, 9, 10]

2.3. Tìm độ dài của mảng 2 chiều

Độ dài của mảng 2 chiều được biểu diễn qua số hàng và số cột

Ví dụ:

#Tạo danh sách

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

      [6, 7, 8, 9, 10],

      [11, 12, 13, 14, 15]]

#Sử dụng len(ex) để lấy số hàng (số phần tử của danh sách ex)

m = len(ex)

#Sử dụng len(ex[0]) để lấy số cột (số phần tử của danh sách con)

n = len(ex[0])

print(m)

print(n)

2.4. Nhập mảng 2 chiều Python

Sử dụng vòng lặp for lồng nhau để nhập phần tử cho danh sách 2 chiều.

Ví dụ:

# Tạo danh sách rỗng

ex = []

# Nhập số hàng và cột

n = int(input('Nhập số hàng '))

m = int(input('Nhập số cột '))

# Duyệt phần tử cho danh sách có n hàng, m cột

for i in range(n):

    # Thêm phần tử là một hàng vào danh sách ex

    ex.append([])

    for j in range(m):

        x = input('Nhập phần tử ')

        # Thêm phần tử vào hàng i

        ex[i].append(x)

2.5. Tính tổng các phần tử trong mảng 2 chiều

Sử dụng vòng lặp for lồng nhau để tính tổng tất cả phần tử danh sách 2 chiều.

Ví dụ:

#Khai báo danh sách 2 chiều

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

      [6, 7, 8, 9, 10],

      [11, 12, 13, 14, 15]]

#Khai báo biến tính tổng

sum = 0

#Duyệt từng phần tử trong list

for i in range(len(ex)):

    for j in range(len(ex[i])):

        #Tăng biến tổng một lượng bằng giá trị phần tử hiện tại

        sum = sum + ex[i][j]

print(sum)

Kết quả:

120

2.6. Nối mảng 2 chiều trong Python

Nối mảng 2 chiều là việc thực hiện kết hợp 2 hay nhiều danh sách với nhau.

Ví dụ:

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

[6,7,8,9,10],

[11,12,13,14,15]]

ex2 = [[1,2,3,4,5,9],

[6,7,8,9,10],

[11,12,15]]

print(ex+ex2)

Kết quả:

[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 9], [6, 7, 8, 9, 10], [11, 12, 15]]

2.7. Cộng các phần tử của 2 mảng

Phép tính này chỉ thực hiện được khi 2 mảng là ma trận 2 chiều có cùng độ dài. Tức là một mảng 2 chiều cỡ n✖️n chỉ thực hiện cộng các phần tử với mảng có độ dài n ✖️ n và kết quả trả về cũng sẽ là một mảng 2 chiều có kích cỡ n ✖️ n.

Ví dụ: 

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

[6,7,8,9,10],

[11,12,13,14,15]]

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

[6,7,8,9,10],

[11,12,13,14,15]]

result = [[0,0,0,0,0],

[0,0,0,0,0],

[0,0,0,0,0]]

#Duyệt qua từng hàng

for i in range(len(ex)):

#Duyệt qua từng cột

for j in range(len(ex[0])):

result[i][j] = ex[i][j] + ex2[i][j]

print(result)

Kết quả:

[[2, 4, 6, 8, 10], [12, 14, 16, 18, 20], [22, 24, 26, 28, 30]]

Ngoài các thao tác trên, mảng 2 chiều hay danh sách 2 chiều trong Python hoàn toàn kế thừa các thao tác tương tự như mảng 1 chiều.

3. Bài tập mảng 2 chiều trong Python

Bài 1: Viết hàm tính tổng các phần tử của mảng 2 chiều

Giải: 

def sumary(ex):

result = 0

for row in ex:

for num in row:

result += num

return result

Bài 2: Viết hàm đếm số các số hạng dương và tổng của các số hạng dương trong mảng 2 chiều.

def countAndSumary(ex):

count = 0

sum = 0

for row in ex:

for num in row:

if num > 0:

count += 1

sum += num

return count, sum

Dưới đây là danh sách các bài tập nổi bật về mảng 2 chiều Python:

  • Bài 3: Viết hàm tính trung bình cộng của cả danh sách, trung bình cộng các phần tử dương trong danh sách.
  • Bài 4: Viết hàm tìm vị trí của phần tử âm đầu tiên trong danh sách.
  • Bài 5: Viết hàm tìm vị trí của phần tử dương cuối cùng trong danh sách.
  • Bài 6: Viết hàm tìm phần tử lớn nhất của danh sách và vị trí phần tử lớn nhất cuối cùng.
  • Bài 7: Viết hàm tìm phần tử lớn thứ nhì của danh sách và các vị trí của các phần tử đạt giá trị lớn nhì.
  • Bài 8: Viết hàm tính số lượng các số dương liên tiếp nhiều nhất.
  • Bài 9: Viết hàm tính số lượng các số dương liên tiếp có tổng lớn nhất.
  • Bài 10: Viết hàm tính số lượng các phần tử liên tiếp đan dấu nhiều nhất (dãy phần tử liên tiếp được gọi là đan dấu nếu tích hai phần tử liên tiếp âm).

4. Lời Kết

Bài viết trên đã cung cấp các kiến thức về mảng 2 chiều trong Python cũng như các bài tập nổi bật về phần kiến thức này. Hi vọng các bạn áp dụng thành công các kiến thức được ICANTECH chia sẻ để nâng cao kĩ năng sử dụng Python của mình. Chúc các bạn thành công!

Nguồn ảnh: ICANTECH.

Share
Tags
Lập trình Python

Bài tương tự