如何计算矩阵中一行中1的数量?



我目前正在尝试输入一个矩阵,并使python代码能够逐行计算该行中有多少15。然后我将把所有的数据输出成一行。但是现在,我有点难住了如何收集数据并输出成一行。

注意,这是我的输入法示例:

2 3
1 1 3
1 2 0
1 2 3

输出得到:

1
1
1

output I trying to get:

2
1
1

下面是我需要帮助修复的代码:

n, m = map(int, input().split())
#input
for i in range(n):
l = list(int(m) for m in input().split())
#repeating rows of list inputs for matrix

if len(l) < m or len(l) > m:

print("no")
#if statement for checking length of lists
else:
for b in range(n):
#the count function, and unfortunately the part that is wrong                 
v = l.count(1)
print(v)

我很想知道如何输出一行中的所有数据。

您的代码有几个问题。首先,告诉(人类)用户他们需要输入什么是很好的——自动化用户无论如何都不会关心它:

print('Enter the number of rows and the length of each row, separated by a space:')
n, m = map(int, input().split())

(或者您可以在input()调用中这样做)

虽然你的问题实际上是关于代码的最后一位,但你的输入代码也有一个错误:你用每次迭代的输入替换了整个列表,所以你最终只得到l中的最后一行。

写整个输入位的更好方法:

n, m = map(int, input('Number of rows and length of each row, separated by spaces: ').split())
l = []
for i in range(n):
row = list(map(int, input(f'{m} values, for row {i}, separated by spaces: ').split()))
if len(row) != m:
print('Each row must have {m} values!')
exit()
l.append(row)

但是对于你的问题,你可以这样写:

# 2 rows of 3 values
l = [[1, 2, 3], [1, 1, 1]]

(每行有不同数量的1是有意义的吗?)

现在值实际上是列表中的列表,你可以在列表中循环并做你正在做的事情:

for xs in l:
v = xs.count(1)
print(v)
关键是首先添加到您正在构建的列表列表的每一行(毕竟,您使用的是2d矩阵),然后循环遍历每行,并分别计算每行的元素。您可以使用for

来遍历可迭代对象的每个元素,就像列表一样。 结果:

l = [[1, 2, 3], [1, 2, 3]]
for xs in l:
v = xs.count(1)
print(v)

输出:

1
1

最新更新