Исключение числа при создании случайного списка

Подскажите, пожалуйста, как на Python можно создать массив из случайных чисел, например, от -100 до 100, кроме 0?
Заполнять массив руками и использовать random.choice, думаю, не совсем удобно.


Ответы (5 шт):

Автор решения: pix8bit

Это можно сделать таким образом:

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)
→ Ссылка
Автор решения: Bol4onok

Можете делать вот так:

choice((randint(-100, -1), randint(1, 99)))

Если у вас всегда маленькая последовательность, то можете делать вот так(Но этот способ явно не лучший вариант в общем случае, поэтому лучше использовать если границы маленькие):

choice([i for i in range(-100, 100) if i != 0])

Вообще, вариантов, как можно решить вашу проблему множество, я предлагаю лишь один из тех, которые ещё не были реализованы.

→ Ссылка
Автор решения: Namerek
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)
→ Ссылка
Автор решения: Pihto
from random import randint
a = [randint(-100, 100) or 1 for _ in range(20)]

этот вариант который привели выше не правильный. в нем количество единиц будет в два раза больше положенного. к сожалению комментарий под тем ответом оставить не могу репутации не хватает

→ Ссылка