Почему выводит 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 второго.

→ Ссылка