对于在线编程站点,我想使用以下代码(应该不使用map(),因为它提供了有关以下内容的错误:TypeError:“ map”对象无法下标 ):
arr[i][j] = [int(input("Input score").strip().split()[:l]) for j in range(n) for i in range(t)]
代替以下工作版本:
for i in range(t):
for j in range(n):
arr[i][j] = map(int, input("Input score").strip().split())[:l]
,但错误是(假设是)基于提供列表而不是单个值,如下所述:
TypeError:int()参数必须是字符串或数字,而不是'list'
无法通过其他方法找到解决方案,例如在第一步中将rhs(具有所需的解决方案)转换为字符串,然后在第二步中将其分配给lhs;根据需要分配给arr [i] [j]。
P.S。需要使解决方案使用arr的单个和逐行值,例如需要找到值的逐行和,甚至是单个值。以下代码使用逐行的arr值填充总计。
for i in range(t):
for j in range(n):
# Find sum of all scores row-wise
sum = 0
for m in arr[i][j]:
sum += m
total[i][j] = sum
答案 0 :(得分:2)
您可以映射嵌套的for
循环:
for i in range(t):
for j in range(n):
arr[i][j] = map(int, input("Input score").strip().split())[:l]
像这样的列表理解:
arr = [map(int, input("Input score").strip().split())[:l] for i in range(t) for j in range(n)]
并且没有map
之类的>
arr = [[int(k) for k in input("Input score").strip().split())[:l]]
for i in range(t) for j in range(n)]
答案 1 :(得分:1)
我们可以如下进行嵌套列表理解:
t = int(input("Input number of tests: "))
n = int(input("Input number of rows: "))#.strip().split())
total = [[sum([int(i) for i in input("Input score: ").split()]) for j in range(n)] for t_index in range(t)]
print(total)
输入输出对的示例:
Input number of tests: 2
Input number of rows: 3
Input score: 1 2 3
Input score: 2 3 4
Input score: 3 4 5
Input score: 4 5 6
Input score: 5 6 7
Input score: 6 7 8
[[6, 9, 12], [15, 18, 21]]