Python:从公式结果创建嵌套列表

Python:从公式结果创建嵌套列表,python,list,nested-loops,Python,List,Nested Loops,我对Python编程非常陌生,我正试图让我的二次方程求解器将x1和x2的答案“收集”到一个嵌套列表中 它用正确的结果很好地解决了方程,我能够得到我想要的结果,但我无法在循环结束时将它们收集到同一个列表中。代码如下: from math import sqrt abcList = [[1, 2, 1], [9, 12, 4], [1, -7, 0], [1, -2, -3]] for abc in abcList: a, b, c = abc q = b**2 - 4*a*c

我对Python编程非常陌生,我正试图让我的二次方程求解器将x1和x2的答案“收集”到一个嵌套列表中

它用正确的结果很好地解决了方程,我能够得到我想要的结果,但我无法在循环结束时将它们收集到同一个列表中。代码如下:

from math import sqrt

abcList = [[1, 2, 1], [9, 12, 4], [1, -7, 0], [1, -2, -3]]

for abc in abcList:
    a, b, c = abc
    q = b**2 - 4*a*c

    if q > 0:
        q_sqrt = sqrt(q)
        x1 = (-b + q_sqrt)/(2*a)
        x2 = (-b - q_sqrt)/(2*a)

    elif q == 0:
        x1 = -b/(2*a)
        x2 = x1

    else:
        raise ValueError("q is negative.")

    resultList = []

    print ('x1 = ', x1)

    resultList.append(x1)

    print ('x2 = ', x2)

    resultList.append(x2)

    #print ('a = ', a, ', b = ', b, 'and c = ',c)

    print (resultList)

print ('-----')
这是我得到的结果:

x1 =  -1.0
x2 =  -1.0
[-1.0, -1.0]
x1 =  -0.6666666666666666
x2 =  -0.6666666666666666
[-0.6666666666666666, -0.6666666666666666]
x1 =  7.0
x2 =  0.0
[7.0, 0.0]
x1 =  3.0
x2 =  -1.0
[3.0, -1.0]
-----
这就是我想要的结果:

x1 =  -1.0
x2 =  -1.0

x1 =  -0.6666666666666666
x2 =  -0.6666666666666666

x1 =  7.0
x2 =  0.0

x1 =  3.0
x2 =  -1.0


[[-1.0, -1.0], [-0.6666666666666666, -0.6666666666666666], [7.0, 0.0], [3.0, -1.0]]
-----

您只需要稍微重新组织代码。在
for
循环的
外部初始化
resultList
,并将每对答案附加为一个2元素列表

    from math import sqrt

    abcList = [[1, 2, 1], [9, 12, 4], [1, -7, 0], [1, -2, -3]]
    resultList = []

    for abc in abcList:
        a, b, c = abc
        q = b**2 - 4*a*c

        if q > 0:
            q_sqrt = sqrt(q)
            x1 = (-b + q_sqrt)/(2*a)
            x2 = (-b - q_sqrt)/(2*a)
        elif q == 0:
            x1 = -b/(2*a)
            x2 = x1
        else:
            raise ValueError("q is negative.")

        #print ('a = ', a, ', b = ', b, 'and c = ',c)
        print ('x1 = ', x1)
        print ('x2 = ', x2)
        resultList.append([x1, x2])

    print (resultList)        
    print ('-----')    
输出

x1 =  -1.0
x2 =  -1.0
x1 =  -0.666666666667
x2 =  -0.666666666667
x1 =  7.0
x2 =  0.0
x1 =  3.0
x2 =  -1.0
[[-1.0, -1.0], [-0.66666666666666663, -0.66666666666666663], [7.0, 0.0], [3.0, -1.0]]
-----
顺便说一句,只需输入
数学
模块即可进行平方根运算:您可以使用
**
求幂运算符,这比进行函数调用更有效

q_sqrt = q ** 0.5

您的问题是,您试图将单个组件附加到结果列表中,并且在循环的每个迭代中都将其打印出来。 结果列表必须在循环之外,并且x1和x2必须成对追加到结果列表。请参阅下文:

from math import sqrt

abcList = [[1, 2, 1], [9, 12, 4], [1, -7, 0], [1, -2, -3]]

resultList = []

for abc in abcList:
    a, b, c = abc
    q = b**2 - 4*a*c

    if q > 0:
        q_sqrt = sqrt(q)
        x1 = (-b + q_sqrt)/(2*a)
        x2 = (-b - q_sqrt)/(2*a)

    elif q == 0:
        x1 = -b/(2*a)
        x2 = x1

    else:
        raise ValueError("q is negative.")


    print ('x1 = ', x1)

    print ('x2 = ', x2)

    resultList.append( [x1, x2] )

    #print ('a = ', a, ', b = ', b, 'and c = ',c)

print (resultList)

print ('-----')

删除行
print(resultList)
以使其与
print('----')
具有相同的缩进。(投票决定以不太可能帮助他人的方式结束)提出得很好的问题。