列表理解 - 如何将字符串映射为整数?

list comprehension - how to map strings as integers?

我有一个简单的任务,即创建一个平方大小为 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 将我的结果解释为字符串,而不是整数,这就是问题的来源,但我试图根除这个问题,但没有成功。任何人都可以发现我在哪里犯了错误?

您不应将计算格式化为字符串。删除字符串格式,你应该没问题:

matrix = [[abs(x-y) for y in range(n)] for x in range (n)]

旁注:Python 有一个内置的 abs 函数,您不需要重新实现它。

首先,您明确地将值转换为字符串,因此您不应该这样做

matrix = [[abs(x-y) for y in range(n)] for x in range (n)]

for n in range(n):
    print(matrix[n])