Почему выводит list index out of range?
path = 'C:\\Users\\admin\\Desktop\\1.txt'
m= []
cords = []
f = open(path,mode = 'r')
a = list(map(int,f.readline().split()))
for i in range(a[1]):
m.append(([]))
for j in range(a[0]):
m[i].append(0)
#создаем массив
for i in range(a[2]):
mas = (list(map(int,f.readline().split())))
print(mas[0],mas[1])
x= mas[0]
y = mas[1]
m[y][x]=1
#заменяем нули однерками
for i in m:
print(i)
#выводим массив
данные в файле:
7 6 8
3 1
5 1
1 2
1 3
5 3
2 5
1 6
6 6
Ответы (1 шт):
Автор решения: inquirer
→ Ссылка
path = 'C:\\Users\\admin\\Desktop\\1.txt'
m= []
cords = []
f = open(path,mode = 'r')
a = list(map(int,f.readline().split()))
print(a)
f.close()
for i in range(a[1]):
m.append(([]))
for j in range(a[0]):
m[i].append(0)
#создаем массив
print(m)
print('размер первого измерения', len(m))
print('размер второго измерения', len(m[0]))
for i in range(0, len(m)):
for k in range(0, len(m[0])):
m[i][k] = 1
#заменяем нули однерками
print(m) #выводим массив
Дело в том, что у Вас двумерный список размер первого измерения 6, а второго 7. При этом в файле Вы берете индекс 7, больше размера массива(первого измерения "mas[0]"- размер измерения 6).
И чтобы заполнить все значения массива нужно итеративно двигаться по каждому элементу. В Вашем примере индексы остаются неизменными. Я сделал два вложенных цикла для наглядности i это индекс первого измерения, k второго.