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

How to count the amount of 1s in one of the rows in a matrix?

我目前正在尝试输入一个矩阵,并让 python 代码能够逐行计算该行中有多少个 1。然后我将所有数据连续输出。但是现在,我对如何收集数据并将其连续输出感到困惑。

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

2 3
1 1 3
1 2 0
1 2 3

我得到的输出:

1
1
1

我试图得到的输出:

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)

关键是首先附加你正在构建的列表列表的每一行(毕竟,你在二维矩阵之后)然后遍历每一行,然后分别计算每一行的元素。您可以只使用 for 来遍历可迭代对象的每个元素,例如列表。

结果:

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

输出:

1
1