如何使用 Python 將矩陣行中的元素與其後面的元素配對?
在某些程式設計場景中,您可能遇到過需要將矩陣每一行中的每個元素與其後面的元素配對的情況,換句話說,就是緊跟在該數字後面的元素。因此,在本文中,我們將介紹一些方法和示例來根據條件配對元素。
矩陣
這些是強大的資料結構,用於表示組織成行和列的元素集合。例如,具有 **n** 行和 **m** 列的矩陣將被稱為 **n * m** 矩陣。
以下是一些我們可以執行的操作,以配對矩陣的元素。
巢狀迴圈
這是一種簡單且基本的方法,大多數開發人員都會想到它。在這裡,我們可以使用巢狀迴圈來遍歷矩陣的每一行。在內迴圈中,我們從行的第一個元素迭代到倒數第二個元素,因為最後一個元素之後沒有後續元素。**curr** 和 **nxt** 變數分別儲存當前元素及其後面的元素,即後面的元素。
示例
mat= [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def pair_with_rear(mat):
for row in mat:
for i in range(len(row) - 1):
curr = row[i]
nxt = row[i + 1]
print(f"Pair: {curr} - {nxt}")
pair_with_rear(mat)
列表推導式
此方法使用列表推導式來建立元素對。此推導式遍歷矩陣中的每一行,並在每一行中使用 **(row[i], row[i+1])** 將每個元素與其後面的元素配對,並將結果儲存在 pairs 列表中。
示例
mat = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def pair_with_rear(mat):
pairs = [(row[i], row[i + 1])
for row in mat
for i in range(len(row) - 1)]
for pair in pairs:
print(f"Pair: {pair[0]} - {pair[1]}")
pair_with_rear(mat)
輸出
Pair: 1 - 2 Pair: 2 - 3 Pair: 4 - 5 Pair: 5 - 6 Pair: 7 - 8 Pair: 8 - 9
列表壓縮和 Zip 方法
此方法將 **zip()** 函式與列表推導式結合使用來配對每一行元素。此函式獲取每次迭代中的元素(在下面的程式中,它是當前行和從第二個位置開始的切片行),並將它們組合成元組,這些元組將儲存在 pairs 列表中。
示例
mat = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def pair_with_rear(mat):
pairs = [(curr, nxt)
for row in mat
for curr, nxt in zip(row, row[1:])]
for pair in pairs:
print(f"Pair: {pair[0]} - {pair[1]}")
pair_with_rear(mat)
Pair: 1 - 2 Pair: 2 - 3 Pair: 4 - 5 Pair: 5 - 6 Pair: 7 - 8 Pair: 8 - 9
NumPy 庫
我們使用 NumPy 庫來高效地處理矩陣。首先,我們使用 **np.array(mat).flatten()** 將矩陣展平為 1D 陣列。然後,使用列表推導式,我們透過迭代展平後的陣列並將其中的每個元素與其後面的或後續元素配對來建立對。
示例
import numpy as np
mat = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def pair_with_rear(matrix):
flattened_matrix = np.array(matrix).flatten()
pairs = [(flattened_matrix[i], flattened_matrix[i + 1])
for i in range(len(flattened_matrix) - 1)]
for pair in pairs:
print(f"Pair: {pair[0]} - {pair[1]}")
pair_with_rear(mat)
輸出
Pair: 1 - 2 Pair: 2 - 3 Pair: 3 - 4 Pair: 4 - 5 Pair: 5 - 6 Pair: 6 - 7 Pair: 7 - 8 Pair: 8 - 9
Itertools 庫
我們使用 **Itertools** 庫來處理配對操作。與 NumPy 庫方法類似,在此方法中,我們也首先將陣列展平為 1D 矩陣,並將矩陣的所有行連線到單個 1D 可迭代陣列中。然後,使用列表推導式,透過迭代展平後的列表來建立對,其中當前元素由 **flatten_mat[i]** 表示,下一個元素由 **flatten_mat[i+1]** 表示,並將結果儲存在 pairs 列表中。
示例
import itertools
mat = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def pair_with_rear(matrix):
flattened_matrix = list(itertools.chain.from_iterable(matrix))
pairs = [(flattened_matrix[i], flattened_matrix[i + 1])
for i in range(len(flattened_matrix) - 1)]
for pair in pairs:
print(f"Pair: {pair[0]} - {pair[1]}")
pair_with_rear(mat)
輸出
Pair: 1 - 2 Pair: 2 - 3 Pair: 3 - 4 Pair: 4 - 5 Pair: 5 - 6 Pair: 6 - 7 Pair: 7 - 8 Pair: 8 - 9
因此,您可以選擇任何您覺得舒適的方法。每種方法都提供了一種將元素與其後面/後續元素配對的方式。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP