Pages : 1
#1 Le 05/03/2016, à 19:22
- msg21
Resolu : Liste dans PyThon
Bonjour,
y'a t-il une fonction en python pour compter les éléments (sans répétition) dans une liste.
Merci d'avance
Dernière modification par msg21 (Le 05/03/2016, à 20:09)
Hors ligne
#2 Le 05/03/2016, à 19:49
- Arioch91
Re : Resolu : Liste dans PyThon
Bonjour.
C'est ça que tu cherches ?
>>> liste = [1,2,3,5,10]
>>> len(liste)
5
8 Go RAM - SSD 120 Go + SATA 1 To - Ubuntu 14.04 LTS
Hors ligne
#3 Le 05/03/2016, à 19:52
- msg21
Re : Resolu : Liste dans PyThon
Merci arioch
Mais dans la liste il y 'a des éléments qui se répètent : exemple :
Liste=[1,2,4,9,2,6,7,1]
Hors ligne
#4 Le 05/03/2016, à 19:54
- pingouinux
Re : Resolu : Liste dans PyThon
Bonsoir,
Si les éléments de la liste sont différents, la solution de Arioch91 convient, sinon tu peux faire
>>> l=[1,2,3,1,3]
>>> len(l)
5
>>> len(set(l))
3
Hors ligne
#5 Le 05/03/2016, à 20:08
- msg21
Re : Resolu : Liste dans PyThon
Bonsoir,
Si les éléments de la liste sont différents, la solution de Arioch91 convient, sinon tu peux faire>>> l=[1,2,3,1,3] >>> len(l) 5 >>> len(set(l)) 3
Réponse rapide, merci à vous.
Hors ligne
#6 Le 06/03/2016, à 08:09
- Arioch91
Re : Resolu : Liste dans PyThon
Ah désolé, je n'avais pas compris le sens de "sans répétition".
Je pensais que tu ne voulais pas d'un code faisant une boucle sur chaque élément de ton tableau pour le compter.
8 Go RAM - SSD 120 Go + SATA 1 To - Ubuntu 14.04 LTS
Hors ligne
#7 Le 06/03/2016, à 18:01
- msg21
Re : Resolu : Liste dans PyThon
Merci arioch et merci à tous les participants à ce Forum ...
Dernière modification par msg21 (Le 06/03/2016, à 18:02)
Hors ligne
#8 Le 06/03/2016, à 18:37
- msg21
Re : Resolu : Liste dans PyThon
J'ai une autre question svp :
Si on a un ensemble de liste E={[1,2,3], [7,8,9,10], [1,2,3]}
Si on veut écrire E sans répétition d'éléments, comment faire? (set(E) marche pas)
merci
Hors ligne
#9 Le 06/03/2016, à 18:59
- pingouinux
Re : Resolu : Liste dans PyThon
>>> E=[(1,2,3), (7,8,9,10), (1,2,3)]
>>> set(E)
{(7, 8, 9, 10), (1, 2, 3)}
Hors ligne
#10 Le 06/03/2016, à 20:29
- msg21
Re : Resolu : Liste dans PyThon
>>> E=[(1,2,3), (7,8,9,10), (1,2,3)] >>> set(E) {(7, 8, 9, 10), (1, 2, 3)}
j'ai ça :
>>> E=[[1,2,3], [7,8,9,10], [1,2,3]]
>>> set(E)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>
Hors ligne
#11 Le 06/03/2016, à 21:07
- pingouinux
Re : Resolu : Liste dans PyThon
Bah oui, tu n'as pas fait ce que je t'ai indiqué…
Dans un set, tu ne peux avoir que des éléments hashables. Les listes n'en font pas partie, car elles sont modifiables. Il faut utiliser des tuples.
Hors ligne
#12 Le 06/03/2016, à 21:19
- msg21
Re : Resolu : Liste dans PyThon
Merci pengouinux,
j'ai trouvé cela :
liste=[[1,2,3], [7,8,9,10], [1,2,3]]
liste2=[]
for elt in liste:
try:
ind = liste2.index(elt)
except:
liste2.append(elt)
print(liste2)
ça marche même si j'ai pas tout compris
Dernière modification par msg21 (Le 06/03/2016, à 21:21)
Hors ligne
#13 Le 06/03/2016, à 21:34
- pingouinux
Re : Resolu : Liste dans PyThon
Ce que je t'ai indiqué en #9 marche aussi. Si tu veux partir directement de ta liste de listes (et non d'une liste de tuples) :
>>> E=[[1,2,3], [7,8,9,10], [1,2,3]]
>>> set(map(tuple,E))
{(7, 8, 9, 10), (1, 2, 3)}
Explication sur ce que tu fais en #12 :
Tu parcours tous les éléments de liste (chaque élément est une liste). Si cet élément est déjà dans liste2, on ne fait rien, sinon on l'y ajoute.
Hors ligne
#14 Le 06/03/2016, à 21:38
- msg21
Re : Resolu : Liste dans PyThon
Ok, c'est claire
Merci
Hors ligne
#15 Le 07/03/2016, à 06:25
- pingouinux
Re : Resolu : Liste dans PyThon
Pour compléter mon message #13, si tu veux récupérer une liste de listes :
>>> E=[[1,2,3], [7,8,9,10], [1,2,3]]
>>> list(map(list,set(map(tuple,E))))
[[7, 8, 9, 10], [1, 2, 3]]
Hors ligne
#16 Le 07/03/2016, à 09:15
- msg21
Re : Resolu : Liste dans PyThon
Pour compléter mon message #13, si tu veux récupérer une liste de listes :
>>> E=[[1,2,3], [7,8,9,10], [1,2,3]] >>> list(map(list,set(map(tuple,E)))) [[7, 8, 9, 10], [1, 2, 3]]
Excellent, et bravo
Merci infiniment.
Hors ligne
Pages : 1