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é!
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ụ:
List 2 chiều hay mảng 2 chiều có:
Có thể biểu diễn ma trận bằng bảng:
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ụ:
Khai báo từng mảng con
Để truy xuất mỗi phần tử, sử dụng cú pháp: tên_danh_sách[i][j]
Trong đó:
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])
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]
Độ 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)
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)
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
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]]
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.
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 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.