Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在创建函数以计算特定范围内列表中元素的乘积时遇到问题_Python_Python 3.x - Fatal编程技术网

Python 在创建函数以计算特定范围内列表中元素的乘积时遇到问题

Python 在创建函数以计算特定范围内列表中元素的乘积时遇到问题,python,python-3.x,Python,Python 3.x,我的任务是编写一个函数来计算列表元素在第n个和第m个位置之间的乘积 我已尝试编写以下代码,但始终得到“int”对象不可下标: myList=[1,2,3,4,5] total = 1 for x in myList: total = total * x print(total[1:3]) 我做错了什么?我试图使n=1和m=3,我试图得到2*3*4,你可以使用: 或者 或者 例如 语法错误为total[1:3],因为total是integer类型。 也许你想写printtotal?

我的任务是编写一个函数来计算列表元素在第n个和第m个位置之间的乘积

我已尝试编写以下代码,但始终得到“int”对象不可下标:

myList=[1,2,3,4,5]

total = 1

for x in myList:
    total = total * x

print(total[1:3])
我做错了什么?我试图使n=1和m=3,我试图得到2*3*4,你可以使用:

或者

或者

例如


语法错误为total[1:3],因为total是integer类型。
也许你想写printtotal???

total是一个数字,所以total[1:3]试图在数字下标。我相信你想在我的列表[1:3]中用x来代替。您希望为列表下标,然后查找产品,而不是查找产品,然后尝试为产品下标。您应该索引“myList”,而不是int类型的“total”,因此无法下标。它看起来像:对于我的列表中的x[1:3]谢谢你们!成功了。但也许我不明白[1:3]。。。把[1:3]写在清单上,那应该是1和2对吗?因为在列表中它是包含的?在列表中它是包含的?在shell提示符下试试。很抱歉二战,我不明白你的意思?我在问当我写[1:3]的时候,他们是否应该在我的例子中包括,2,3和4?我不理解你写的prod A,n,m。。。什么是arr?@JamieSlattery prodA,n,m是函数定义,arr是标识符,我建议你阅读pythons的基本结构。你能解释一下[1:3]吗?我在我的示例中的列表中认为1实际上处于零位置。因此[1:3]应该包括2,3,4?@JamieSlattery列表索引在python中从0开始,是[1:3]应该包括2,3,4,但正如你在问题中所问的,你想将列表从n=1乘以m=3,你得到的结果是1*2*3,这就是为什么我调整了函数,这样你可以通过指定从1到3的索引来实际乘以元素,从我的笔记中得到结果1*2*3,它说,对于n=1和m=3,结果应该是2·3·4,对于n=0,m=3,结果应该是1·2·3·4。。。我不明白吗?是的,你是对的,我把它调整到。。。对于myList[1:3]中的x:---但是你能解释一下[1:3]吗?计算中应该包括1,2,和3吗?不,myList[1:3]会给出2,3,4。这是我的想法,但当我把它放入公式中时,我得到的结果是6。对不起,我在读另一个例子。在您的情况下,输出将为2,3。请看一看。这些事情是合理的,因为它们在python 2和python 3之间不一样;
def prod(A, n, m):
    arr = A[n:m + 1]
    if arr:
        res = 1
        for num in arr:
            res *= num
        return res
from functools import reduce

def prod(A, n, m):
    arr = A[n:m + 1]
    if arr:
        return reduce(lambda x, y: x*y, arr)
from functools import reduce
from operator import mul

def prod(A, n, m):
    arr = A[n:m + 1]
    if arr:
        return reduce(mul, arr)
>>>print(prod([1, 2, 3, 4, 5], 1, 3))
24