【问题标题】:How to access every element of a multi-dimensional Python list through a loop?如何通过循环访问多维 Python 列表的每个元素?
【发布时间】:2015-07-16 07:14:54
【问题描述】:
import re
def get_number(element):
    re_number = re.match("(\d+\.?\d*)", element)

    if re_number:
        return float(re_number.group(1))
    else:
        return 1.0

def getvalues(equation):
    elements = re.findall("([a-z0-9.]+)", equation)
    return [get_number(element) for element in elements]


eqn = []
eqn_no = int(raw_input("Enter the number of equations: "))

for i in range(eqn_no):
    eqn.append(getvalues(str(raw_input("Enter Equation %d: " % (i+1)))))
print "Main Matrix: "
for i in range((eqn_no)):
    for j in range((eqn_no+1)):
        print "\t%f" %(eqn[i][j]),
    print
print
equation=[]
equation=eqn
for k in range((eqn_no-1)):
    for i in range((k+1),eqn_no):
        for j in range((eqn_no+1)):
            if(eqn[i][j]!=0):
                eqn[i][j]=eqn[i][j]-(eqn[k][j]*(equation[i][k]/eqn[k][k]))



    print "Matrix After %d step: " %(k+1)
    for i in range(eqn_no):
            for j in range((eqn_no+1)):
                print "\t%f"%(eqn[i][j]),
                equation[i][j]=eqn[i][j];

            print
    print

输入:

25x+5y+z=106.8
64x+8y+z=177.2
144x+12y+z=279.2

output is:

Main Matrix: 
    25.000000   5.000000    1.000000    106.800000
    64.000000   8.000000    1.000000    177.200000
    144.000000  12.000000   1.000000    279.200000

Matrix After 1 step: 
    25.000000   5.000000    1.000000    106.800000
    0.000000    8.000000    1.000000    177.200000
    0.000000    12.000000   1.000000    279.200000

Matrix After 2 step: 
    25.000000   5.000000    1.000000    106.800000
    0.000000    8.000000    1.000000    177.200000
    0.000000    0.000000    1.000000    279.200000

But it should be like

Main Matrix: 
    25.000000   5.000000    1.000000    106.800000
    64.000000   8.000000    1.000000    177.200000
    144.000000  12.000000   1.000000    279.200000

Matrix After 1 step: 
    25.000000   5.000000    1.000000    106.800000
    0.000000    -4.80000    -1.56000    -96.208000
    0.000000    -16.8000    -4.76000    -335.968000

Matrix After 2 step: 
    25.000000   5.000000    1.000000    106.800000
    0.000000    -4.80000    -1.56000    -96.208000
    0.000000    0.000000    0.699999    0.759981

有人知道为什么会发生这种情况吗?为什么零部分正在改变而其他部分没有?我已经用 c++ 完成了这段代码,它在那里完美地工作,但在这里我面临很多问题。也许我是python的新手。

【问题讨论】:

标签: python python-2.7 list matrix input


【解决方案1】:

以下内容应该适合您:

def get_number(element):
    re_number = re.match("(-?\d+\.?\d*)", element)

    if re_number:
        return float(re_number.group(1))
    else:
        return 1.0

def getvalues(equation):
    elements = re.findall("(-?[a-z0-9.]+)", equation)
    return [get_number(element) for element in elements]


eqn = []
eqn_no = int(raw_input("Enter the number of equations: "))

for i in range(eqn_no):
    eqn.append(getvalues(str(raw_input("Enter Equation %d: " % (i+1)))))

print

for line in eqn:
    print "|" + "  ".join(["%3.1f" % value for value in line]) + "|"

例如:

Enter the number of equations: 2
Enter Equation 1: x+2y=3
Enter Equation 2: 4x+5y=6

|1.0  2.0  3.0|
|4.0  5.0  6.0|

这也适用于4.3x+6.7y=8

【讨论】:

  • 从用户那里获取输入怎么样?每次我尝试提供输入时,都会遇到一些错误。我想为“n”个输入提供输入,其中 n 也将接受输入。
  • 我已经更新了答案以包含您现有的输入阶段,希望这会有所帮助。
  • 不确定你想要什么格式,但我已经更新了脚本,让你有一个自己玩的想法。
  • 不客气。当您对最终答案感到满意时,别忘了您可以接受它以获得您的学者徽章。
  • 我现在面临另一个问题。某些元素并没有按照应有的方式改变。你能帮我吗?我已经更新了我的代码。
猜你喜欢
  • 2020-01-15
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 2021-05-10
  • 2020-04-29
相关资源
最近更新 更多