如何打印函数输出的第n行

时间:2019-01-20 03:27:43

标签: python recursion slice

如何打印输出'a'的第n行?我尝试切片“ a”,但不起作用。我似乎也无法通过“ a”进行迭代。

A = [1,2,3]
B = []
C = []

def move(n, pegA, pegB, pegC):
    if n > 0:
        move(n - 1, pegA, pegC, pegB)
        target.append(pegA.pop())
        print(len(A), len(B), len(C))
        move(n - 1, pegC, pegB, pegA)

a = move(3, A, C, B)

a返回以下输出:

2 0 1
1 1 1
1 2 0
0 2 1
1 1 1
1 0 2
0 0 3

我希望能够打印出第二行,即1 11。我应该改组函数'move'吗?

1 个答案:

答案 0 :(得分:1)

move的结构方式不会保留已打印输出的任何记录,因此很难恢复。如果需要按索引查找输出行,则可以返回每行输出的列表,如下所示:

def move(n, pegA, pegB, pegC, output_lines=None):
    if output_lines is None:
        output_lines = []
    if n > 0:
        move(n - 1, pegA, pegC, pegB, output_lines)
        target.append(source.pop())
        output_lines.append('%d %d %d' % (len(A), len(B), len(C)))
        move(n - 1, pegC, pegB, pegA, output_lines)
    return output_lines

a = move(3, A, C, B)

# print all lines of output
print('\n'.join(a))

# print 2nd line
print(a[1])