使用ANSI格式代码在Python中打印2维数组,而无需迭代每个元素

问题描述 投票:0回答:1

我正在编写程序,其中要根据特定条件检查数组的每个字符元素。如果condition为true,则元素应设置为粗体和彩色格式。

程序如下:

arr = [['F','O','R','S','T'],
       ['A','B','C','D','E'],
       ['M','N','P','Q','R']]

for row in arr:
    print (row)

for row in arr:
    for i in range(len(row)):
        #its just sample condition, actual condition would be different
        if row[i] == 'F' or row[i] == 'A' or row[i] == 'M': 
            row[i] = '\033[31m'+row[i]+'\x1b[0m'

print("\nUpdated Array: printed by iterating each element")
for row in arr:
    for column in row:
            print (column, end=" ")
    print("\n")

print("\nUpdated Array: printed without iterating each element")
for row in arr:
    print (row)

输出如下:

[['F','O','R','S','T']

[['A','B','C','D','E']

[['M','N','P','Q','R']

更新数组:通过迭代每个元素打印

F O R S T

A B C D E

M N P Q R

更新后的数组:在不迭代每个元素的情况下打印

['\ x1b [31mF \ x1b [0m','O','R','S','T']

['\ x1b [31mA \ x1b [0m','B','C','D','E']

['\ x1b [31mM \ x1b [0m','N','P','Q','R']


是否有任何方法可以直接打印以下数组而无需迭代数组

['F','O','R','S','T']

['A','B','C','D','E']

['M','N','P','Q','R']

python arrays ansi
1个回答
0
投票

您可以将数组设为单个字符串,然后打印该字符串

new = ''
for row in arr:
    for col in row:
        #its just sample condition, actual condition would be different
        if col == 'F' or col == 'A' or col == 'M': 
         new += (' \033[31m'+ col +'\x1b[0m ')
        else:
          new+=(' '+ col)
    new+=('\n')     

然后打印new

输出:

 F O R S T
 A B C D E
 M N P Q R

© www.soinside.com 2019 - 2024. All rights reserved.