Je dois ajouter une valeur différente dans la liste. J'ai des plages comme: 1-20, j'ai besoin d'une valeur de 0 21-30, j'ai besoin de valeurs aléatoires entre 1 et 50 31-56, j'ai besoin de valeurs aléatoires entre 200 et 1000 57-77, j'ai besoin de ...

0
abhi spdy 15 mars 2021 à 11:55

3 réponses

Meilleure réponse

Cette fonction prend un nombre et génère celui souhaité en fonction de votre demande.

import random
def gen_number(num):
    if 21<=num<=30:
        return random.randint(1, 51)
    elif 31<=num<=56:
        return random.randint(200, 1001)
    elif 57<=num<=77:
        return random.randint(1, 51)
    else:
        return 0

Et ici, vous utilisez la fonction et obtenez le résultat.

result = []
for i in range(1, 99):
    result.append(gen_number(i))
2
Amir Esmaeili 15 mars 2021 à 09:09

Un moyen simple consiste à utiliser numpy pour générer des entiers aléatoires et les ajouter dans une boucle.

from numpy import random
l = []
for i in range(98):
    if i < 20 or i >= 78:
        l.append(0)
    elif 20 <= i <= 30
        l.append(random.randint(1, 50)
    elif ...
        and so on
1
Darina 15 mars 2021 à 09:05

En Python, les listes peuvent être mises à jour ou initialisées de plusieurs manières. Vous pouvez créer une liste initialisée à zéro, puis définir les différentes plages sur les valeurs souhaitées. Ce serait plus propre.

Quelque chose comme:

total_size = 98
my_list = [0 for in range(total_size)]
# Use list slicing to set the ranges
range_start, range_stop = 0, 5
my_list[range_start:range_stop] = [1 for i in range(range_stop - range_start)]  # 1s for the first 5 elements
# Whatever you want for the other slices.
0
Daniel Soutar 15 mars 2021 à 09:08