J'essaie de créer une liste en itérant dans une autre liste à l'aide d'une compréhension de la liste et en laissant uniquement des entiers dans la liste qui ne sont pas égaux au même élément index des deux autres listes.
J'ai deux listes. avec 10 entiers de 0 à 10, par exemple: p> J'ai besoin d'une compréhension de liste qui crée une nouvelle liste de 10 entiers, mais chaque élément ne peut pas être égal au même élément d'index des deux listes. p> Un exemple de sortie pourrait être: p> merci d'avance. p> p> P>
3 Réponses :
Vous pouvez faire quelque chose comme ceci: comme une alternative plus rapide que vous pourriez faire: p>
Génie! Merci beaucoup.
Il n'y a aucune raison d'utiliser aléatoire.sample code> de la taille 1 lorsque aléatoire.choice code> fera.
@blhsing je crois que aléatoire.choice ne fonctionne pas avec des ensembles
@Danielmesejo bon point. Une conversion vers une liste fera, mais alors l'avantage de aléatoire.Sample code> n'est pas aussi clair que j'avais initialement pensé.
@Danielmesejo bien en fait je le reprouve. La surcharge de aléatoire. / code> avec une taille d'échantillon de 1 est beaucoup plus grande que aléatoire.choice code> avec une conversion vers une liste: jdoodle.com/embed/v0/xnr
@blhsing a mis à jour la réponse!
[2, 9, 7, 8, 5, 10, 7, 1, 7]
import random
def get_random(n, exclude):
my_set = set(range(n+1))
my_set.difference_update(set(exclude))
return random.choice(list(my_set))
def get_random2(n, exclude):
nums = list(range(n+1))
while True:
num = random.choice(nums)
if num not in exclude:
return num
list1 = [0,3,2,5,7,2,3,5,9,2]
list2 = [1,7,2,5,0,0,2,3,0,4]
# print list with numbers between 0 and 10 inclusive
print([get_random(10, nums) for nums in zip(list1, list2)])
print([get_random2(10, nums) for nums in zip(list1, list2)])
Il en va de même parce que c'est différent de 0 et 1, est-ce correct?
@Danielmesejo oui c'est correct!
Une raison pour laquelle il est 4 et pas uhm, 8?
Non complètement aléatoire, tant que ce n'est pas 0 ou 1
Y a-t-il une gamme à partir de laquelle vous choisissez? E.g entre 1 et 10, 1 et 1000, -100 et 100?
0 à n, n est l'entrée de la fonction
@ user7431590 Vous pouvez accepter un en cliquant sur la coche à côté de celui-ci, celui qui vous a permis de mieux comprendre le problème. Acclamations