我想乘以列表的第一個列表的第一個數字1,第二個列表的第二個數字5,等等。例如,對於[[1,2,3],[4,5,6],[7,8,9]],我想要得到1 * 5 * 9。瞭解減少與列表的列表
雖然有很多方法可以做到這一點,我想知道如何減少與枚舉作用:
def test(m):
return reduce(lambda a, b: a[1][a[0]]*b[1][b[0]], enumerate(m))
print test([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
我認爲a
在開始的時候是(0,[1,2,3]),所以a [1]是[1,2,3],a [0]是0,所以a [1] [a [0]]是1.
但是,我得到以下例外:
return reduce(lambda a, b: a[1][a[0]]*b[1][b[0]], enumerate(mat))
TypeError: 'int' object has no attribute '__getitem__'
爲什麼是a
整數?
一點也不確定你想要做什麼 - 列舉一個列表會給你索引和值(如果你想用索引做些什麼)。否則不需要'枚舉'。所以我猜這有問題。所以從你的輸入 - 這是絕對不清楚你想要做什麼。如果您想在列表中添加多個項目,請清楚您的輸入和預期輸出。不幸的是,您的文章是一個問題和實驗的混合體 - 無法理解您正在嘗試做什麼! – gabhijit