如何覆盖先前打印声明中已打印的数组元素?

时间:2019-04-21 14:05:35

标签: python overwrite

我有一个4x4矩阵的2D数组。我正在以格式化形式打印数组。 现在,我想添加一个1秒的睡眠时间,然后对于数组中的两个元素(我知道索引),想用同一张照片中的值覆盖这两个元素。

我尝试添加end =“ \ r”,然后更新数组元素,但这无济于事。它仍在先前打印的下方打印新阵列。

print('\n'.join(['\t'.join([str(cell) for cell in row]) for row in duplicate_array]), end = "\r")
time.sleep(1)
duplicate_array[0] = 0
duplicate_array[1] = 1
print('\n'.join(['\t'.join([str(cell) for cell in row]) for row in duplicate_array]))

预期的输出-

a  a  2  3  
4  5  6  a  
8  9  10 11  
12 13 14 15  

我想首先显示上面的数组,然后在1秒钟后显示,我只想用相应的索引覆盖值为'a'的元素。我是0和1。

1秒后阵列将变为-

0  1  2  3
4  5  6  7
8  9  10 11
12 13 14 15

我不想覆盖整个数组,仅覆盖0和1处的元素。因此,用户只能看到那些正在变化的元素,而不是整个数组。

实际输出以及我拥有的代码-

a   a   2   3
4   5   6   7
8   9   10  11
a   a   2   34  15
4   5   6   7
8   9   10  11
12  13  14  15

1 个答案:

答案 0 :(得分:0)

如果您不想使用第三方库,那么此代码是您的最佳实践。我在Windows上得到了预期的结果

import os, time


array = [['a','a' ,'2', '3'], ['4',  '5',  '6',  'a'], ['12', '13', '14', '15']]

print('\n'.join(['\t'.join([str(cell) for cell in row]) for row in array]), end = "\r")

time.sleep(2)

array[0][0] = '0'
array[0][1] = '1'
array[1][3] = '7'

os.system('cls')

print('\n'.join(['\t'.join([str(cell) for cell in row]) for row in array]), end = "\r")

input()