1

我有一个包含许多 X,Y 值的列表

aList = [[1, 2],[3, 4],[5, 6],[7, 8]]

即 X = 1,Y = 2

我需要分别提取一行中的每个 X 和 Y 值,将这些值分别分配给 X 和 Y 变量,然后对 X 和 Y 值进行操作。

然后这应该循环到下一行,相同的过程将再次发生。我将使用 print 而不是在此循环之后需要发生的过多代码。

即循环开始,X 赋值为 1,Y 赋值为 2,X 和 Y 用作公式中的输入,循环结束(并重复此列表中的剩余值)

aListLen = len(aList)
aListRows = len(aList)
aListCols = len(aList[0])

以下代码仅在列表中一一提取值

for row in range(aListRows):
    for column in range(aListCols):
        X = aList[row][column]
        print X

如下添加 Y 变量会导致错误

for row in range(aListRows):
    for column in range(aListCols):
        X = a[row][column]
        Y = a[row][column+1]
        print X
        print Y

现在看,我不确定下面的 if/elif 循环是否会起作用,因为 X 和 Y 值需要一起放入公式中。 我可以在第二个循环下添加一个 if/elif 语句,但我仍然需要有一种方法来强制第二个循环重复。(无论如何,这让我们回到了最初的问题)

for row in range(aListRows):
    for column in range(aListCols):
        if column == 0:
            X = aList[row][column] 
        elif column == 1:
            Y = aList[row][column]

提供 X 值后,如何强制循环重新启动?我假设循环会重复,这次提供 Y 的值。

有没有更好的方法来做到这一点?

应该指出这是 Python 2.7(所以我不能使用 Python 3 独有的任何东西)

4

3 回答 3

3

您正在循环内部列表的索引并向它们添加 1。这将导致IndexErrorwhencolumn包含 的值aListCols,因为len(a[row]) == column+1

我想你正在寻找这个:

In [17]: aList = [[1, 2],[3, 4],[5, 6],[7, 8]]

In [18]: for X,Y in aList:
   ....:     print "X value is %s, Y value is %s" %(X, Y)
   ....:     
X value is 1, Y value is 2
X value is 3, Y value is 4
X value is 5, Y value is 6
X value is 7, Y value is 8
于 2013-10-06T02:19:40.980 回答
2

要分配变量而不是打印它们,您可以执行以下操作:

for X,Y in aList:
   tempX = X
   tempY = Y

在第一次迭代中,tempX 的值为 1,tempY 的值为 2。在第二次迭代中,tempX 为 3,tempY 为 4...

于 2013-10-06T02:54:51.630 回答
0

您可以使用递归函数而不是循环。基本上,这是一个调用自身的函数。例如:

def myfunction():
    (something happens that wants you to start the function over)
    myfunction()

因此,它将再次调用该函数,迫使代码返回顶部。

于 2020-02-28T00:47:46.200 回答