I'm taking this online Python course本课程的一个共同主题是不使用函数或库来解决问题。问题是:
定义一个函数prod(L),它返回列表L中元素的乘积。
我的尝试如下。这个具体问题要求在范围内使用,下一个问题用于。我理解如何使用in,但不适用于范围。如何使用0,1,2,3的范围i来帮助计算产品?
在范围循环中被破坏:
def prod(L):
Llen = len(L)
for i in range (0,Llen):
print(L[-1]*L[-2]*L[-3]*L[-4])
prod([1,2,3,4])
我的in循环工作正常。
def prod(L):
p = 1
for i in L:
p *= i
return p
prod([1,2,3,4])
请不要lambda或'来自运营商导入mul'!我理解那些方法。
答案 0 :(得分:1)
这个想法与in
几乎相同。请注意,您不需要从列表长度创建变量,也不需要为range()
指定开头,默认情况下为0
。
def prod(L):
p = 1
for i in range(len(L)):
p *= L[i]
return p
print(prod([1,2,3,4])) # prints 24
答案 1 :(得分:0)
>>> x = [2,3,4,7]
>>> len(x)
4
>>> range(0,len(x))
[0, 1, 2, 3]
>>> range(len(x))
[0, 1, 2, 3]
>>> def prod(L):
... p = 1
... for i in range(len(L)):
... p = p*L[i]
... return p
...
>>> prod(x)
168
答案 2 :(得分:0)
使用range
:
def prod (x):
range (42)
def prod_ (head, *tail):
return head if not tail else head * prod_ (*tail)
return 1 if not x else prod_ (*x)
print (prod ( [1, 2, 5, 19] ) )
答案 3 :(得分:0)
允许使用math
库吗?这很容易(在numpy
中进行会有点欺骗):
>>> from math import *
>>> def prod(L):
if 0 in L:
return 0.
#elif len(L)==0:
# return 0.
elif sum([item<0 for item in L])%2==0
return exp(sum(map(log, L)))
else:
return -exp(sum(map(log, map(abs, L))))