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]
3 Réponses :
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]
Merci pour la réponse c'était une approche intéressante, mais peut-être un peu compliqué pour mes compétences de codage
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)
Merci pour la réponse. C'était une tentative bien meilleure que la mienne!
Je pense que votre code est déjà court et propre. Quelques changements que vous pouvez faire:
triché () code> lorsque vous le découpez. LI>
ol> intervention = triée (données [: 30]) code> p>
- Vous pouvez également définir les deux
intervention code> et Control code> sur une ligne: li>
ol> intervention, contrôle = données [: 30], données [30:] code> p>
- Je remplacerais le
30 code> avec une variable: li>
ol> demi = len (données) // 2 code> p>
- Il est plus sûr d'ouvrir un fichier avec
avec code>. Qui ferme le fichier automatiquement lorsque l'indentation s'arrête. LI>
ol> xxx pré>
- Avec l'utilisation de f-chaînes, vous pouvez faire la déclaration d'écriture Shorter: li>
ol>
xxx pré> Tout combiné: p> xxx pré> p>
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.