Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/03/2016, à 20: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, à 21:09)

Hors ligne

#2 Le 05/03/2016, à 20: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, à 20: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, à 20: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, à 21:08

msg21

Re : Resolu : Liste dans PyThon

pingouinux a écrit :

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, à 09: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, à 19: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, à 19:02)

Hors ligne

#8 Le 06/03/2016, à 19: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, à 19: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, à 21:29

msg21

Re : Resolu : Liste dans PyThon

pingouinux a écrit :
>>> 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, à 22: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, à 22: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, à 22:21)

Hors ligne

#13 Le 06/03/2016, à 22: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, à 22:38

msg21

Re : Resolu : Liste dans PyThon

Ok, c'est claire

Merci

Hors ligne

#15 Le 07/03/2016, à 07: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, à 10:15

msg21

Re : Resolu : Liste dans PyThon

pingouinux a écrit :

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