python - Python - 使用递归返回遍历矩阵
问题描述
假设我有一个这样的矩阵:
array = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
我想做一个基本上遍历矩阵并打印出整数的方法,如下所示:
1,2,3,4,5,6,7,8,9
但我想递归地执行此操作,以便获得更多经验。我目前有这个方法和一个助手:
def flatten_array(matrix):
return str(helper(len(matrix), len(matrix[0]), 0, 0, matrix))
def helper(current_row, current_col, i, j, matrix):
s = ''
if i >= current_row:
return 1
elif j >= current_col:
return helper(current_row, current_col, i + 1, 0, matrix)
else:
s += str(matrix[i][j]) + ','
print(matrix[i][j], end=',')
helper(current_row, current_col, i, j + 1, matrix)
return s
它打印这个:
1,2,3,4,5,6,7,8,9,
但我实际上想退回而不是打印,有人可以帮忙吗?
解决方案
我已将您的代码修改为return
扁平列表而不是打印。我已经传递了一个附加参数ans
,它是一个list
用于存储矩阵值的参数。
array = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def flatten_array(matrix):
return helper(len(matrix), len(matrix[0]), 0, 0, matrix, [])
def helper(current_row, current_col, i, j, matrix, ans):
if i >= current_row:
return 1
elif j >= current_col:
return helper(current_row, current_col, i + 1, 0, matrix, ans)
else:
ans.append(matrix[i][j])
helper(current_row, current_col, i, j + 1, matrix, ans)
return ans
print(flatten_array(array))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
推荐阅读
- django - 带有 html 链接的 Django 错误 TypeError at / 'set' object is not reversible
- python - 如何在同一行中打印浮点数和字符串
- r - 提高采样填充数据集的效率
- python - 将动态dicts传递给python线程出来的结果是一样的
- c++ - 在另一个类中调用公共类方法作为c ++中的插件
- python - 提高从头开始构建的多项逻辑回归模型的准确性
- reactjs - i18next-scanner 实施挑战
- javascript - 使用 Puppeteer,您将如何映射一组链接,它将转到数组中的第一个链接,关闭该选项卡,然后重复?
- dataweave - Mule 4:Dataweave 2.0:有什么方法可以在 groupBy 方法中使用类似于 SQL GroupBY 和 Have 的过滤条件?
- r - R中的条形图填充某些值