Python unique des valeurs dans une liste
Je suis nouveau sur le Python et je viens de trouver du set() pour être un peu déroutant. Quelqu'un peut-il offrir de l'aide avec la recherche et la création d'une nouvelle liste de numéros uniques( un autre des mots d'éliminer les doublons)?
import string
import re
def go():
import re
file = open("C:/Cryptography/Pollard/Pollard/newfile.txt","w")
filename = "C:/Cryptography/Pollard/Pollard/primeFactors.txt"
with open(filename, 'r') as f:
lines = f.read()
found = re.findall(r'[\d]+[^\d.\d+()+\s]+[^\s]+[\d+\w+\d]+[\d+\^+\d]+[\d+\w+\d]+', lines)
a = found
for i in range(5):
a[i] = str(found[i])
print(a[i].split('x'))
Maintenant
print(a[i].split('x'))
....donne le résultat suivant
['2', '3', '1451', '40591', '258983', '11409589', '8337580729',
'1932261797039146667']
['2897', '514081', '585530047', '108785617538783538760452408483163']
['2', '3', '5', '19', '28087', '4947999059',
'2182718359336613102811898933144207']
['3', '5', '53', '293', '31159', '201911', '7511070764480753',
'22798192180727861167']
['2', '164493637239099960712719840940483950285726027116731']
Comment puis-je sortie une liste de seulement de non répétition des nombres? J'ai lu sur les forums que les "set()" ne peut le faire, mais j'ai essayé sans succès. Toute aide est grandement appréciée!
- Je ne suis pas sûr de comprendre. Aucune des listes vous montrer disposent en interne des valeurs répétées. Êtes-vous inquiet à propos de l'existence de doublons dans certaines autres valeurs, mais (par hasard) il n'y a aucun dans les cinq premiers vous ai montré? Ou avez-vous besoin pour éliminer les doublons entre les listes, de sorte que
2
ne montre que dans la première liste, mais pas le troisième ou le cinquième? - Je suis désolé que sa fin dans la nuit, ce que je voulais dire, c'est "pas de répétition des valeurs si je concaténer tous la liste de ensemble"
InformationsquelleAutor Mike Mcmahon | 2013-11-19
Vous devez vous connecter pour publier un commentaire.
Un
set
est une collection (comme unlist
outuple
), mais il ne permet pas de doublons et a très vite l'adhésion les tests. Vous pouvez utiliser une compréhension de liste pour filtrer les valeurs dans une liste qui ont paru dans un précédent de la liste:De sortie:
Noter que cette version ne filtre pas les valeurs qui sont dupliqués au sein d'une seule liste (sauf s'ils sont déjà les doublons d'une valeur dans une liste précédente). Vous pouvez travailler autour de ce que, par le remplacement de la compréhension de liste explicite boucle qui vérifie chaque individu de la valeur contre le
seen
(etadd
s si c'est nouveau) avant d'ajouter à une liste de sortie. Ou si l'ordre des éléments dans votre sous-listes n'est pas important, vous pouvez les transformer en jeux de leur propre:Enfin, si le sous-listes sont un hareng rouge entièrement et que vous voulez tout simplement filtrer une liste réduite pour ne recevoir que des valeurs uniques, qui sonne comme un travail pour le
unique_everseen
recette de laitertools
de la documentation:set
devrait fonctionner dans ce cas.Vous pouvez essayer ce qui suit:
Si vous voulez des valeurs uniques à partir de la liste aplatie, vous pouvez utiliser de réduire() pour déplier la liste. Ensuite, utilisez la frozenset() constructeur pour obtenir la liste de résultats: