7
votes

Caractéristiques uniques entre plusieurs listes

J'essaie de trouver les différences uniques entre 5 listes différentes.

J'ai vu plusieurs exemples de la manière de trouver des différences entre deux listes, mais n'ont pas été en mesure d'appliquer ceci à plusieurs listes.

Il a été facile de trouver les similitudes entre 5 listes.

Exemple: xxx

Cependant, je veux comprendre comment déterminer les caractéristiques uniques Pour chaque ensemble.

Est-ce que quelqu'un sait faire cela?


2 commentaires

Surpris cela n'a jamais été demandé avant


Ce Cette réponse devrait donc fonctionner, mais pour une raison quelconque, elle échoue.


4 Réponses :


4
votes

Cela pourrait-il aider? Je suppose qu'une liste de listes illustrent cet exemple. Mais vous pouvez modifier la source de données pour répondre à vos besoins xxx

modifier (en fonction de quelques commentaires utiles): xxx


9 commentaires

Compte [I] == 1 doit être Compte [x] == 1


En outre, il n'y a pas besoin de map (défini, lists_of_lists) , chaîne.from_itéable (list_of_lists) fonctionne exactement identique.


Ouais, mais s'il y a des doublons dans la liste, cela les élimine. Juste une petite optimisation. :)


@karthikr qui n'est pas une optimisation


+1 Mais je pense que OP veut juste le résultat comme [k pour k, c en compte.items () si c == 1]


@jamylak dans la question, op, explique "Comment déterminer les fonctionnalités uniques pour chaque ensemble". , alors j'ai décidé de le garder comme des listes séparées.


@karthikr mais l'exemple de code de OP montre clairement le contraire. Aussi carte (définir ne fera que cela plus lent, car vous devez itération à travers les éléments potentiellement deux fois maintenant


Merci pour les suggestions, allez-y l'essayer aujourd'hui et revenez.


Bien que cela soit élégant, il pourrait ne pas être facile de collecter les valeurs uniques correspondant à la liste qu'ils ont eu lieu, alors que dans la réponse acceptée, c'est possible. L'inconvénient: puisque la réponse acceptée utilise le jeu, la commande est perdue.



3
votes

Comment ça va? Disons que nous avons des listes d'entrée [1, 2, 3, 4] code>, [3, 4, 5, 6] code> et [3, 4, 7, 8] code>. Nous voudrions sortir [1, 2] code> dans la première liste, [5, 6] code> dans la deuxième liste et [7, 8] de la troisième liste.

from itertools import chain

A_1 = [1, 2, 3, 4]
A_2 = [3, 4, 5, 6]
A_3 = [3, 4, 7, 8]

# Collect the input lists for use with chain below
all_lists = [A_1, A_2, A_3]

for A in (A_1, A_2, A_3):
  # Combine all the lists into one
  super_list = list(chain(*all_lists))
  # Remove the items from the list under consideration
  for x in A:
    super_list.remove(x)
  # Get the unique items remaining in the combined list
  super_set = set(super_list)
  # Compute the unique items in this list and print them
  uniques = set(A) - super_set
  print(sorted(uniques))


2 commentaires

Un autre étudiant diplômé avec lequel je travaille a utilisé ce code et ça a fonctionné aussi bien! Merci pour la suggestion


Pouvez-vous aider à répondre à une relation associée Cette question ?



0
votes

OK, je suis débutant à Python et je n'ai pas pu suivre les suggestions ci-dessus très bien, mais a été capable de trouver mon problème à l'aide du code suivant, en gros, juste un tas de comparaisons de paire de paires.

x1 = [x for x in hr1 if x not in hr2]
x2 = [x for x in x1 if x not in hr4]
x3 = [x for x in x2 if x not in hr8]
x4 = [x for x in x3 if x not in hr24]
len(x4)


0 commentaires

1
votes

Utilisation de l'exemple de différenciation dans une compréhension xxx pré>

exemple # 1 h3> xxx pré>

exemple # 2 h3>
A_1 = [1, 2, 3, 4]
A_2 = [3, 4, 5, 6]
A_3 = [3, 4, 7, 8]

all_lists = [A_1, A_2, A_3]

f(all_lists)

[[1, 2], [5, 6], [7, 8]]


0 commentaires