我正在编写一个函数来查找多项式的所有有理零点,并且需要按列表中的每个数字将列表中的每个数字分开 实施例
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])
答案 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)是显式浮点划分。