Python的幂和指数

时间:2018-12-26 15:56:35

标签: python

将列表中的数字乘以定义的指数的最佳方法是什么。

目前,我有8个数字的列表,需要将这些数字提升为幂。每个列表将始终包含8个数字,并且列表中的数字将始终具有其索引值所在的指数。

例如:

List = [1,2,3,4,5,6,7,8]

Power(1,0) + Power(2,1) + Power(3,2) +.... Power(8,7)    

但是,问题是,如果列表中没有值,那么如何在不影响总和的情况下携带指数增加的值。

示例:

List = [1,None,3,4,5,6,7,8]

Power(1,0) + (none) + Power(3,2) +.... Power(8,7)

任何实施想法都会有所帮助。

3 个答案:

答案 0 :(得分:1)

List = [1,None,3,4,5,6,7,8]
result = sum([pow(List[i],i) for i in range(len(List)) if str(List[i]).isdigit()])

答案 1 :(得分:1)

也许这样可以帮助您入门?

import numpy as np

l = [1, None, 3, 4, 5, 6, 7, 8]

# If you need to define the powers
# powers = [0, 1, 2, 3, 4, 5, 6, 7]

powers = np.arange(len(l)) # If powers are always indices

arr = np.array([x if x is not None else 0 for x in l])

arr**powers
# array([      1,       0,       9,      64,     625,    7776,  117649, 2097152]

(arr**powers).sum()
# 2223276

再三考虑一下,如果您因为[None, 1, 2, 3] = 0**0而拥有1,那么上述内容就会出现问题。所以我们应该选择类似的东西

l = [1, None, 3, 4, 5, 6, 7, 8]

numbers = np.array([x for x in l if x is not None])
powers = np.array([i for i in range(len(l)) if l[i] is not None])
(numbers**powers).sum()

答案 2 :(得分:0)

好吧,您可以使用列表推导仅填充数值:

index_list = range(len(list))

sum([pow(list[i], i) for i in index_list if str(list[i]).isdigit()])
#Output: 2223276

在这里,我们总结一个列表,其中包含由指数提供幂的所有值。只会对数值求和!