-1
votes

Python Création d'une nouvelle liste contenant des éléments non égaux aux éléments du même index de deux autres listes

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: xxx

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.

Un exemple de sortie pourrait être: xxx

merci d'avance.


7 commentaires

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


3 Réponses :


2
votes

Vous pouvez faire quelque chose comme ceci: xxx

sortie xxx

comme une alternative plus rapide que vous pourriez faire: xxx


6 commentaires

Génie! Merci beaucoup.


Il n'y a aucune raison d'utiliser aléatoire.sample de la taille 1 lorsque aléatoire.choice 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 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 avec une conversion vers une liste: jdoodle.com/embed/v0/xnr


@blhsing a mis à jour la réponse!



0
votes
[2, 9, 7, 8, 5, 10, 7, 1, 7]

0 commentaires

0
votes
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)])

0 commentaires