问题描述
小F得到了一个矩阵。如果矩阵中某一个格子的值是偶数,则该值变为它的三倍;如果是奇数,则保持不变。小F想知道调整后的矩阵是什么样子的。
问题理解
需要处理一个矩阵,矩阵中的每个元素根据其奇偶性进行不同的操作:
- 如果元素是偶数,将其值变为原来的三倍。
- 如果元素是奇数,保持其值不变。
- 通过遍历矩阵的每一个元素,并根据其奇偶性进行相应的操作,就可以得到更新后的矩阵。这个过程可以通过嵌套的循环来实现。
数据结构选择
- 输入是一个二维列表(矩阵)。
- 输出也是一个二维列表(处理后的矩阵)。
算法步骤
-
函数定义
def solution(a: list) -> list::定义了一个名为solution的函数,它接受一个二维列表a作为参数,并返回一个二维列表。
-
初始化结果矩阵
result = []:创建一个空的列表result,用于存储处理后的矩阵。这个列表将在后续的循环中逐步填充每一行经过处理后的元素。
-
遍历矩阵的行和元素
- 外层循环
for row in a::遍历输入矩阵a的每一行。对于每一行,会创建一个新的空列表new_row,用于存储该行经过处理后的元素。 - 内层循环
for element in row::遍历当前行row中的每一个元素。在这个循环中,会检查每个元素的奇偶性并进行相应处理。
- 外层循环
-
根据奇偶性处理元素
if element % 2 == 0::通过取余运算判断元素是否为偶数。如果是偶数,执行new_row.append(element * 3),即将该元素的值变为原来的三倍后添加到当前行的新列表new_row中。else::如果元素不是偶数(即为奇数),执行new_row.append(element),保持该元素的值不变并添加到new_row中。
-
更新结果矩阵
result.append(new_row):在完成当前行所有元素的处理后,将处理好的行new_row添加到结果矩阵result中。
-
返回结果矩阵
return result:在遍历完输入矩阵的所有行并完成处理后,返回最终得到的处理后的矩阵result。
代码人生
def solution(a: list) -> list:
# 创建一个新的矩阵来存储更新后的值
result = []
# 遍历矩阵的每一行
for row in a:
new_row = []
# 遍历当前行的每一个元素
for element in row:
# 检查元素的奇偶性
if element % 2 == 0:
# 如果是偶数,将其值变为原来的三倍
new_row.append(element * 3)
else:
# 如果是奇数,保持不变
new_row.append(element)
# 将更新后的行添加到结果矩阵中
result.append(new_row)
# 返回更新后的矩阵
return result
if __name__ == '__main__':
print(solution([[1, 2, 3], [4, 5, 6]]) == [[1, 6, 3], [12, 5, 18]])
print(solution([[7, 8, 9], [10, 11, 12]]) == [[7, 24, 9], [30, 11, 36]])
print(solution([[2, 4], [6, 8]]) == [[6, 12], [18, 24]])
测试样例
样例1:
输入:
a = [[1, 2, 3], [4, 5, 6]]
输出:[[1, 6, 3], [12, 5, 18]]
样例2:
输入:
a = [[7, 8, 9], [10, 11, 12]]
输出:[[7, 24, 9], [30, 11, 36]]
样例3:
输入:
a = [[2, 4], [6, 8]]
输出:[[6, 12], [18, 24]]