如何在Python中按列表划分整数?

时间:2016-11-07 03:56:41

标签: python list division

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]数字的输出。

知道我可能会出错吗?

3 个答案:

答案 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