python - 使用 ANSI 格式代码在 python 中打印二维数组,而不迭代每个元素
问题描述
我正在编写程序,其中根据特定条件检查数组的每个字符元素。如果条件为 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']
更新数组:通过迭代每个元素打印
福斯特_
BCDE _
M NPQR
更新的数组:打印而不迭代每个元素
['\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']
解决方案
您可以将数组设为单个字符串,然后打印字符串
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
推荐阅读
- powerbi - Power BI:通过另一个表上的每一行行生成一个新行
- java - 读取本地的 java spring 属性
- java - Java Bean 将许多对象封装成一个,如何实现?
- r - R沿向量分配
- .net - @Html.ActionLink 中的本地化器
- flutter - Flutter 注册问题
- r - 使用 {blogdown} 包时,我可以从构建中排除某些帖子吗?
- facebook-comments - 自动刷新facebook评论导致闪烁
- flutter - 使用 Provider 向整个 Flutter 模块全局提供 BLoC
- c# - 插入 ConcurrentDictionary 时使用惰性求值是否会阻止多次计算请求的值?