关于在Python中填充2D数组的问题
我想要的是填充一个3*3的数组。此代码按预期工作:关于在Python中填充2D数组的问题,python,multidimensional-array,Python,Multidimensional Array,我想要的是填充一个3*3的数组。此代码按预期工作: arr = [ [] ] * 3 for i in range(3): arr[i] = (list(map(int, input().split()[:3]))) print(arr) 但如果我这样写: arr = [ [] ] * 3 for i in arr: arr[i] = (list(map(int, input().split()[:3]))) print(arr) [] [] [] 它给出了一个错误:“
arr = [ [] ] * 3
for i in range(3):
arr[i] = (list(map(int, input().split()[:3])))
print(arr)
但如果我这样写:
arr = [ [] ] * 3
for i in arr:
arr[i] = (list(map(int, input().split()[:3])))
print(arr)
[]
[]
[]
它给出了一个错误:“TypeError:列表索引必须是整数或片,而不是列表”
在第二个示例中,我做错了什么?尝试运行以下代码段:
arr = [ [] ] * 3
for i in arr:
print(i)
结果应该是这样的:
arr = [ [] ] * 3
for i in arr:
arr[i] = (list(map(int, input().split()[:3])))
print(arr)
[]
[]
[]
当您尝试将结果分配给arr[i]
时,实际上您分配给了arr[[]]
,这会引发错误TypeError:列表索引必须是整数或片,而不是list
。应使用整数或片访问数组元素。例如arr[1]
或arr[0:3]
代码的解决方案是:
arr = [ [] ] * 3
for i in len(range(3)):
arr[i] = (list(map(int, input().split()[:3])))
print(arr)
尝试在for循环中插入print(i)
,以了解每种情况下i
的值。