【发布时间】:2020-06-27 19:36:00
【问题描述】:
我正在尝试获取列表的乘积,其中每个元素都乘以它的索引 + 1。我尝试使用 reduce 和 enumerate
value = reduce(lambda a, b: (a[0]+1)*a[1]*b[1], enumerate(list))
但它给出了TypeError: 'int' object is not subscriptable。
是否可以一行完成?
Editv2
[1,2,3]列表示例
希望输出list[0]*1 * list[1]*2 * list[2]*3 = 36
【问题讨论】:
-
你能给出一个示例列表和你想要的结果吗?
-
没有'a'的位置,可能是单个数字检查一次
-
您显然想要这些产品的总和!否则,如果在某处乘以索引 0,您将始终得到 0。
-
为什么不只是
sum和生成器表达式:sum(index * value for index, value in enumerate(data))? -
代替 sum 做 numpy.prod([i*v for i, v in enumerate(lst, 1)])
标签: python lambda reduce enumerate