如何计算矩阵中某一行中 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
我目前正在尝试输入一个矩阵,并让 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