2016-09-21 85 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)是明確的分區劃分。

相關問題