循环抛出二维数组并在每个位置打印出最常见的字符



我有一个5x10大小的二维数组,像这样:

[[ '0', 'A', 'M', 'P', '0', '0', 'a', '0', '0', '0'],
[ '0', 'H', '0', 'Q', '0', '0', 't', '0', '0', '0'],
[ 'q', 'C', 'M', 'P', 'r', '0', '0', '0', 'w', 'i'],
[ '0', 'H', '0', 'P', '0', 't', 'h', '0', '0', '0'],
[ '0', 'C', 'M', 'Q', 'r', '0', '0', '0', 'r', 'p']]

我想循环遍历这个数组的方式是遍历列而不是行。我检查了最常见的char(不是数字),然后打印出最常见的字符。如果列中有同样常见的字符,那么随机选择一个最常见的字符。例子:

第一列只有1个字符"这很简单。第二列有两个常见字符& &;和";H"那么就从所有列中随机选择一个,以此类推。

有人能帮我一下吗?我真的不知道该怎么办。谢谢!编辑

现在可以遍历列并打印出每列中的值。剩下的就是打印出最常见的一个。

for i in range(0, 10):
for row in arr:
print(row[i])

第一列输出示例:

0
0
q
0
0

您可以使用random.choicestatistics.multimode:

>>> from random import choice
>>> from statistics import multimode
>>> table = [
[ '0', 'A', 'M', 'P', '0', '0', 'a', '0', '0', '0'],
[ '0', 'H', '0', 'Q', '0', '0', 't', '0', '0', '0'],
[ 'q', 'C', 'M', 'P', 'r', '0', '0', '0', 'w', 'i'],
[ '0', 'H', '0', 'P', '0', 't', 'h', '0', '0', '0'],
[ '0', 'C', 'M', 'Q', 'r', '0', '0', '0', 'r', 'p']
]
>>> for column in zip(*table):
alphas = [char for char in column if char.isalpha()]
if alphas: 
print(choice(multimode(alphas)))
else:
print(None)
q
C
M
P
r
t
t
None
r
p

python 3.8+中,可以使用带有海象操作符的生成器推导式:

>>> print(*[
choice(multimode(alphas)) 
if (alphas:= list(filter(str.isalpha, column))) else None 
for column in zip(*table)
], sep='n')
q
H
M
P
r
t
h
None
w
i