sample = [['AAAA','BBBB','CCCC'],['BBBBB','FFFFF','GGGGG'],['AA','MM']]
我需要计算'a',使a =求和1 / i;其中i的范围从1到n-1。在这个过程中,我需要将一个整数(MyInt)除以列表。
i2 =[]
afinal =[]
for sub_list in sample:
i1 = range(len(sample[0]))
i1.pop(0)
myInt = [1 for x in i1]
newList = [float(int1)/float(x) for int1,x in zip(myInt,i1)]
a = [sum(i) for i in zip(newList)]
afinal.append(a)
print afinal
然而,我得到的输出为[[1.0]],而我应该在列表中得到[1.83333333333,208333333333,1]数字的输出。
知道我可能会出错吗?
答案 0 :(得分:2)
我需要计算' a'这样a =求和1 / i;其中i的范围是1到n-1
>>> n = 5
>>> a = sum(1.0 / i for i in range(1,n))
>>> a
2.083333333333333
>>> 1./1 + 1./2 + 1./3 + 1./4
2.083333333333333
这是你想要做的吗?
答案 1 :(得分:1)
如果我理解得很清楚,您希望将a
除以列表中的每个元素。
您需要的是reduce
:
l = [1, 2, 3, 4]
reduce((lambda x, y : x/y), l)
将返回l
的第一个元素,即1
,除以l
的所有其他元素。
说明的
reduce
将第一个参数应用于第二个参数的前两个元素,并使用新的列表重复它,第一个元素是调用的结果,其他元素是传递列表的元素,从第3个开始,直到第二个参数只有一个元素。
示例调用澄清:
>>>reduce((lambda x, y : x+y), [1, 2, 3])
step 1: 1+2=3, so the new call is reduce((lambda x, y : x+y), [3, 3])
step 2: 3+3=6, so the new call is reduce((lambda x, y : x+y), [6])
step 3: [6] has only one element, so returns 6.
lambda x, y : x/y
表示"你知道,该函数接受两个参数并返回其商数"。这是一个匿名函数。
答案 2 :(得分:0)
假设你在谈论(整数分裂)。我更喜欢使用Numpy。以下可能是您正在寻找的:
import numpy as np
a = np.array([1,2,3,4,5]) # a List
b = 3 # INT Value
print b/a