【发布时间】:2016-03-29 15:07:15
【问题描述】:
我正在尝试构建一个给定列表的函数,该函数将返回一个元素相乘的列表,不包括位于同一索引处的元素。例如对于列表[1,2,3,4],它将返回[2*3*4,1*3*4,1*2*3]。
这是我尝试过的
import numpy as np
def my_function(ints):
products = np.ones(len(ints))
indices = range(0,len(ints))
for i in ints:
if i != indices[i]
products *=ints[i]
return products
我认为我的问题是我认为“i”将引用索引而不是这些索引的值。
- 如何创建引用索引而不是值的内容
- 有没有更好的方法来解决这个问题?
【问题讨论】:
-
可能有一个聪明的单线来做你想做的事......但我只会评论如何在迭代时获取索引:使用
enumerate内置函数,例如for i, value in enumerate(mylist): -
enumerate()会给你价值和迭代器。否则,使用范围循环。 -
最简单也可能最快的方法是找到所有元素的乘积,然后除以每个元素得到结果。但是如果使用固定长度的整数,它可能会溢出。