在python中,如何编写一个函数来计算从n到m位置的列表中偶数元素的乘积?
这是我已经尝试过的,但它只显示了两个值,我想看到该间隔内的所有偶数值,这可能吗在python中,如何编写一个函数来计算从n到m位置的列表中偶数元素的乘积?,python,list,Python,List,这是我已经尝试过的,但它只显示了两个值,我想看到该间隔内的所有偶数值,这可能吗 eL = [8, 2, 4, 5, 6, 10] m = [] n = [] for x in eL: if x % 2 == 0 and x == eL[0]: m.append(x) for x in eL: if x % 2 == 0 and x == eL[4]: n.append(x) print(m, n) 例如, 对于列表[8,2,4,5,6,10
eL = [8, 2, 4, 5, 6, 10]
m = []
n = []
for x in eL:
if x % 2 == 0 and x == eL[0]:
m.append(x)
for x in eL:
if x % 2 == 0 and x == eL[4]:
n.append(x)
print(m, n)
例如,对于列表
[8,2,4,5,6,10]
和n=1
和m=3
结果应该是
2.4
对于n=0
,m=3
结果应该是
8.2.4
对于n=2
,m=4
应该是4.6
以下是代码:
eL = [8, 2, 4, 5, 6, 10]
m = 1
n = 3
result = []
for x in eL:
if x % 2 == 0 and (eL.index(x) >= m and eL.index(x) <= n):
result.append(x)
print(result)
只需这样循环:
对于eL[m:n+1]中的x:
从n到m索引的偶数乘积:
>>> from functools import reduce
>>> from operator import mul
>>> n, m = 1, 4
>>> lst = [1, 2, 3, 4, 5]
>>> sublst = lst[n:m]
>>> evens = [i for i in sublst if i % 2 == 0]
>>> reduce(mul, evens, 1)
8
你能加上预期的输出吗?m和n在哪里起作用?问题和片段不清楚。例如,对于列表[8,2,4,5,6,10],对于n=1和m=3,结果应该是2·4;对于n=0,m=3,结果应该是8·2·4;对于n=2,m=4,结果应该是4·6。例如,对于列表[8,2,4,5,6],对于n=1和m=3,结果应该是2·4,对于n=0,m=3结果应该是8·2·4,对于n=2,m=4应该是4·6。哦,好的,谢谢你的信息。但请将此添加到问题中。@NiniNemsadze已更新,请检查。非常感谢@ppwater,如果x在eL中出现多次,您的代码将无法工作。为什么不直接跳过相关的部分呢
对于eL中的x[n:m+1]:#现在只需检查奇偶校验。
此外,如果只需要乘积,则可以执行乘法,而不是将数据追加到新列表中。
>>> from functools import reduce
>>> from operator import mul
>>> n, m = 1, 4
>>> lst = [1, 2, 3, 4, 5]
>>> sublst = lst[n:m]
>>> evens = [i for i in sublst if i % 2 == 0]
>>> reduce(mul, evens, 1)
8