我想乘以列表的第一个列表的第一个数字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