Неправильно редактируется матрица
Столкнулся с такой проблемой, надо сделать скрипт для перегонки png файлов в таблицы, написал такой код:
from PIL import Image
im = Image.open("level.png")
pixels = im.load()
x, y = im.size
level = [[1] * x] * y
for j in range(y):
for i in range(x):
if pixels[i, j] == (128, 64, 0, 255):
level[j][i] = 7
elif pixels[i, j] == (237, 28, 36, 255):
level[j][i] = 2
with open('test.txt', 'w') as file:
file.write(str(level).replace('], ', '], \n').replace('], ', '').replace('[', '').replace(']', ''))
Вроде бы всё нормально проверяет, видит пиксель всего один раз, но при этом заносит его не по определённому индексу а сразу по всей колонне, так что это
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
При создании матрицы из единиц вы множество раз дублируете ссылку на один и тот же объект. Поступите проще, используйте numpy:
Вместо
level = [[1] * x] * y
сделайте
import numpy as np
level = np.ones((x,y))
Либо, если вам не хочется использовать дополнительные библиотеки, сделайте матрицу при помощи генерации списков:
level = [[1 for i in range(x)] for j in range(y)]

