Помогите пожалуйста! Я пробую создать случайный список состоящий из случайного количества элементов, но программатор выдаёт странную ошибку. Python
import random
import numpy
N = random.randint(1, 10000)
spam = list(range(1, N + 1))
n = [spam]
K = random.randint(1, 100)
spam1 = list(range(1, K + 1))
k = [spam1]
b = []
numpy.random.randint(1, 2 * 10 ^ 9, n).tolist()
print(n)
print(k)
print(b)
ошибка:
Traceback (most recent call last):
File "C:/Users/DX1/PycharmProjects/pythonProject1/main.py", line 10, in <module>
numpy.random.randint(1, 2 * 10 ^ 9, n).tolist()
File "mtrand.pyx", line 746, in numpy.random.mtrand.RandomState.randint
File "_bounded_integers.pyx", line 1320, in numpy.random._bounded_integers._rand_int32
TypeError: 'list' object cannot be interpreted as an integer
Ответы (1 шт):
spam = list(range(1, N + 1))
n = [spam]
...
numpy.random.randint(1, 2 * 10 ^ 9, n).tolist()
Итак, что у вас в переменных, и что требует функция randint:
spam- список (list)n- список в списке- третий параметр функции
randint- этоsize, т.е. размер создаваемого случайного массива, либо список размеров, если это многомерный массив
Так вот, randint не понимает, как ему интерпретировать список в списке в данном случае. Если убрать одну вложенность и оставить просто список, то будет чуть лучше, но всё-равно скорее всего будет ошибка типа такой:
n = spam
...
ValueError: maximum supported dimension for an ndarray is 32, found 1866
Ну то есть максимум в size может быть 32 значения, и это будет 32-мерный массив, а если передать более длинный список размеров, то всё-равно будет ошибка, хотя и другая.
Так что вы сначала определитесь - что вы вообще делаете. Обычно нужен всё-таки одномерный массив и тогда в n должно быть число, а не список. Может вы там имели в виду N, а не n, например? Такой код выполняется без ошибки, хотя вы никуда результат и не присваиваете:
numpy.random.randint(1, 2 * 10 ^ 9, N).tolist()