列表理解 - 如何将字符串映射为整数?
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])
我有一个简单的任务,即创建一个平方大小为 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])