【发布时间】:2021-04-10 14:22:24
【问题描述】:
我有一个简单的任务是创建一个平方大小为 n 的矩阵,例如通过对角线我有一串零,然后用 +1 向外增长数字。我这样做已经达到了结果:
def abs(num):
if num >= 0:
return num
else:
return -num
n = int(input())
matrix = [[f'{abs(x-y)}' for y in range(n)] for x in range (n)]
for n in range(n):
map(int, matrix[n])
print(matrix[n])
达到这样的结果:
['0', '1', '2', '3', '4']
['1', '0', '1', '2', '3']
['2', '1', '0', '1', '2']
['3', '2', '1', '0', '1']
['4', '3', '2', '1', '0']
但是我需要去掉撇号,所以我的结果如下所示:
[0, 1, 2, 3, 4]
[1, 0, 1, 2, 3]
[2, 1, 0, 1, 2]
[3, 2, 1, 0, 1]
[4, 3, 2, 1, 0]
我读到 python 将我的结果解释为字符串,而不是整数,这就是问题所在,但我试图根除问题但没有成功。任何人都可以发现我在哪里犯了错误?
【问题讨论】:
-
如果这不是你想要的,你为什么要明确地使用额外的代码创建字符串?
-
@Mureinik 的答案是正确的,但我还想提一下
map()返回一个新列表,您不会在任何地方分配该列表。它没有改变它的论点。 -
您使用 map 将 int 应用于每一行,然后......因为您不使用它而丢弃该输入。如果你想用 map 来解决问题,那就是
matrix[n] = list(map(int, matrix[n]))。但当然@Mureinik 的答案是要走的路。 -
@joanis
int(input())和带括号的print表明他们使用的是 Python 3,而不是 Python 2。 -
@joanis 在 Python 3 中它返回一个迭代器而不是一个列表。
标签: python string list numbers