0
votes

Split List en sous-listes commandées randomisées

J'aimerais améliorer le code ci-dessous pour diviser une liste de valeurs en deux sous-listes, qui ont été randomisées et triées. Le code ci-dessous fonctionne, mais je suis sûr qu'il existe une meilleure façon de le faire.

Intervention = [1,3,7,9]

Control = [2,4,5,6,8,10]


0 commentaires

3 Réponses :


1
votes

Quelque chose comme ça pourrait être ce que vous voulez:

import random

my_rng = [0 for i in range(30)]
my_rng.extend([1 for i in range(30)])
random.shuffle(my_rng)
Control = [i for i in range(60) if my_rng[i] == 0]
Intervention = [i for i in range(60) if my_rng[i] == 1]


1 commentaires

Merci pour la réponse c'était une approche intéressante, mais peut-être un peu compliqué pour mes compétences de codage



0
votes

Voici une autre solution plus dynamique à l'aide de fonctionnalités intégrées code> aléatoire code> qui crée uniquement les listes (aucune mémoire supplémentaire) et fonctionnerait avec des listes contenant tout type d'objet (à condition que cet objet puisse Soyez trié):

data = list(range(1, 61))
random.shuffle(data)
temp = convert_to_random_list(data, 3)
print(temp)


1 commentaires

Merci pour la réponse. C'était une tentative bien meilleure que la mienne!



1
votes

Je pense que votre code est déjà court et propre. Quelques changements que vous pouvez faire:

  1. appelez triché () lorsque vous le découpez.

    intervention = triée (données [: 30])

    1. Vous pouvez également définir les deux intervention et Control sur une ligne:

      intervention, contrôle = données [: 30], données [30:]

      1. Je remplacerais le 30 avec une variable:

        demi = len (données) // 2

        1. Il est plus sûr d'ouvrir un fichier avec avec . Qui ferme le fichier automatiquement lorsque l'indentation s'arrête. xxx
          1. Avec l'utilisation de f-chaînes, vous pouvez faire la déclaration d'écriture Shorter: xxx

            Tout combiné: xxx


1 commentaires

Merci c'est exactement ce que je cherchais. J'aime l'utilisation de la méthode triée pour remonter deux lignes de mon code, et F String et Open est beaucoup plus propre. Ont accepté la réponse.