我目前正在尝试输入一个矩阵,并使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