Исключение числа при создании случайного списка
Подскажите, пожалуйста, как на Python можно создать массив из случайных чисел, например, от -100 до 100, кроме 0?
Заполнять массив руками и использовать random.choice, думаю, не совсем удобно.
Ответы (5 шт):
Это можно сделать таким образом:
import random
a = 0
arr = []
def func(a):
a = (random.randint(-100, 100))
if a == 0: # Если случайное число = 0, то мы повторно вызываем функцию func. Вызываться
func(a) # она будет до тех пор, пока число a не будет = 0
else:
arr.append(a) # Если число не равно 0, то мы добавляем его в массив arr
for i in range(11): # Цикл для заполнения массива
func(a)
print(arr)
Можете делать вот так:
choice((randint(-100, -1), randint(1, 99)))
Если у вас всегда маленькая последовательность, то можете делать вот так(Но этот способ явно не лучший вариант в общем случае, поэтому лучше использовать если границы маленькие):
choice([i for i in range(-100, 100) if i != 0])
Вообще, вариантов, как можно решить вашу проблему множество, я предлагаю лишь один из тех, которые ещё не были реализованы.
from random import randint
a = [randint(-100, 100) or 1 for _ in range(20)]
Добавлю в качестве варианта основанного на предложении из коммента
@CrazyElf
a = [randint(-100, 99) or 100 for _ in range(20)]
Мне проще всего сделать так:
import random
n = random.randint(-100, 100)
while n == 0:
n = random.randint(-100, 100)
from random import randint
a = [randint(-100, 100) or 1 for _ in range(20)]
этот вариант который привели выше не правильный. в нем количество единиц будет в два раза больше положенного. к сожалению комментарий под тем ответом оставить не могу репутации не хватает