将一个列表中的每个值除以另一个列表中的每个值

时间:2016-09-21 15:17:50

标签: python math

我正在编写一个函数来查找多项式的所有有理零点,并且需要按列表中的每个数字将列表中的每个数字分开 实施例

list1 = [1,2,3,4,5,6,10,12,15,20,30,60]
list2 = [1,2,3,6]

zeros = [1/1,2/1,3/1,4/1,...,1/2,2/2,3/2,4/2,...1/3,2/3,3/3,4/3,etc...]

我将如何做到这一点? 编辑: 这是我的代码:

from fractions import Fraction

def factor(x):
    x = abs(x)
    factors = []
    new_factors = []
    for n in range(1,x):
        if x % n == 0:
            factors.append(n)
            new_factors.append(n)
    for y in factors:
        new_factors.append(y * -1)
    new_factors = sorted(new_factors)
    return new_factors
print(factor(8))


def find_zeros(fnctn,pwr):
    last = fnctn[len(fnctn)]
    first = fnctn[0]
    P_s = factor(last)
    Q_s = factor(first)
    p_zeros = []

我会做这样的事情:

for x in P_s:
for y in Q_s:
    p_zeros.append(x/y)

3 个答案:

答案 0 :(得分:0)

zeros = []
for i in list1:
    zeros.extend([i/j for j in list2])

答案 1 :(得分:0)

我需要的只是嵌套for循环

list1 = [1,2,3,4,5,6,10,12,15,20,30,60] 
list2 = [1,2,3,6]
zeros = []
for x in list1:
    for y in list2:
        zeros.append(x/y)
print(zeros)

输出: [1.0, 0.5, 0.3333333333333333, 0.16666666666666666, 2.0, 1.0, 0.6666666666666666, 0.3333333333333333, 3.0, 1.5, 1.0, 0.5, 4.0, 2.0, 1.3333333333333333, 0.6666666666666666, 5.0, 2.5, 1.6666666666666667, 0.8333333333333334, 6.0, 3.0, 2.0, 1.0, 10.0, 5.0, 3.3333333333333335, 1.6666666666666667, 12.0, 6.0, 4.0, 2.0, 15.0, 7.5, 5.0, 2.5, 20.0, 10.0, 6.666666666666667, 3.3333333333333335, 30.0, 15.0, 10.0, 5.0, 60.0, 30.0, 20.0, 10.0] 感谢大家的帮助!

答案 2 :(得分:0)

没有itertools的解决方案,对于任何人都可能需要它:

要获得此结果:

list1 = [1,2,3,4,5,6,10,12,15,20,30,60]
list2 = [1,2,3,6]

zeros = [1/1,2/1,3/1,4/1,...,1/2,2/2,3/2,4/2,...1/3,2/3,3/3,4/3,etc...]

英文解释

您可以通过i迭代一个变量,比如range(len(list1)),以便按顺序获取list1中每个元素的索引。

要获得list2 i中相应的索引len(list1)/float(len(list2)) list1

然后我们将从list2中取出元素并除以zeros = [] list1 = [1,2,3,4,5,6,10,12,15,20,30,60] list2 = [1,2,3,6] for i in range(len(list1)): zeros.append(list1[i] / float(list2[i//(len(list1)/float(len(list2))))]) print(zeros) 中的元素,并将其添加到最初为空的列表(您将其命名为零)。

Python代码(纠正我,如果我错了,这是未经考试的匆匆写的)

{{1}}

<强> Postword

你没有提到你正在使用的是什么版本的python。这将影响分割整数时的默认行为。有关python主要版本的除法解释,请参阅this SO Q/A。我希望你想要浮动除法,因为1/4与地面划分评估为零。我编写的代码应该适用于任何一个版本的python,因为1 // 2是显式楼层划分,1 / float(2)是显式浮点划分。