Python пытается удалить удаленное число из массива
Есть код:
import numpy as np
import random
def solve_puzzle():
a = 7
b = 7
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
str = []
for i in range(a):
str.append([])
for j in range(b):
x = random.randint((min(numbers)), max(numbers))
str[i].append(x)
numbers.remove(x)
print(x)
print(np.array(str))
solve_puzzle()
Я хочу сделать так, чтобы выводилась матрица из 7 строк по 7 чисел в каждой, причем числа в строке не должны повторятся. Пытался сначала добавлять число в строку, а затем удалять его из списка тех, которые нужно добавить. Однако Python выкатывает ошибку ValueError list.remove(x): x not in list.
Как можно исправить?
Ответы (1 шт):
x = random.randint((min(numbers)), max(numbers))
После удаления элементов из numbers никто вам не гарантирует, что в нём есть любой из элементов между минимальным и максимальным, там вполне могут быть пропуски. Пример:
[1, 9]
В этом массиве есть только минимальный элемент 1 и максимальный 9, а ничего остального между ними просто нет.
Чтобы выбрать произвольный элемент из numbers используйте другой метод:
x = random.choice(numbers)
Хотя это не исправит остальные проблемы вашего алгоритма, с которыми вам ещё предстоит разобраться. Но конкретно эту проблему - исправит.