将列表中的数字乘以定义的指数的最佳方法是什么。
目前,我有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)
任何实施想法都会有所帮助。
答案 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
在这里,我们总结一个列表,其中包含由指数提供幂的所有值。只会对数值求和!