我必須做這個小的遞回練習,給定一個矩陣和一個數字,我必須回傳數字在矩陣中的位置。例如:
matrix = [[2,0,1],[3,5,3],[5,1,4,9],[0,5]]
numberToFind = 5
預期的結果將是這個:
[(1,1),(2,0),(3,1)]
誰能告訴我如何開始或我必須做什么來創建代碼?
uj5u.com熱心網友回復:
這是使用遞回生成器的一種方法:
matrix = [[2,0,1],[3,5,3],[5,1,4,9],[0,5]]
numberToFind = 5
def find(m, n, prev=tuple()):
for i,x in enumerate(m):
if isinstance(x, list):
yield from find(x, n, prev=prev (i,))
elif x==n:
yield prev (i,)
list(find(matrix, numberToFind))
輸出:[(1, 1), (2, 0), (3, 1)]
另一個例子:
matrix = [[2,0,1],[3,5,3],[5,1,4,5],[0,5],[[[2,5,[1,5]]]]]
list(find(matrix, numberToFind))
# [(1, 1), (2, 0), (2, 3), (3, 1), (4, 0, 0, 1), (4, 0, 0, 2, 1)]
uj5u.com熱心網友回復:
您可以只使用一個for回圈,如下所示。比遞回更有效
matrix = [[2,0,1],[3,5,3],[5,1,4,9],[0,5]]
my_list = []
for x in range(0,len(matrix)):
try:
a = matrix[x].index(5)
my_list.append((x,a))
except ValueError:
pass
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/490544.html
上一篇:絕對初學者的Python乒乓游戲
