2016-09-21 95 views
-1

我正在写一个函数来查找多项式的所有有理零,并且需要按列表中的每个数字将列表中的每个数字除以每个数字。将一个列表中的每个值除以另一个列表中的每个值

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) 
+0

向我们展示代码!!! –

回答

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

虽然这段代码可能会回答这个问题,但提供关于为什么和/或代码如何回答这个问题的附加上下文会提高它的长期价值。不鼓励使用仅有代码的答案。 – Ajean

0

我需要的是嵌套的循环

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] 我感谢您的帮助大家好!

+0

在你的问题中,你要求'y/x',在这里你把'x/y'。当然你的'floats'也是不精确的,这比'itertools.product'解决方案不太优雅,尽管我很欣赏它可能更容易理解:) –

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中的元素,并将其添加到某个最初为空的列表(您将其命名为此零)。

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

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) 

Postword

你没有提到你正在使用Python版本。这将影响整数除数的默认行为。请参阅this SO Q/A以获取关于python主要版本的解释。我希望你想要浮动部门,因为1/4与楼板划分评估为零。我写的代码应该适用于任一版本的python,因为1 // 2是明确的分区划分,1/float(2)是明确的分区划分。

相关问题