Bonsoir,
je cherche une fonction permettant d'ordonner une liste d'entiers (tous differents).
par ex:
l=[1,3,56,0,5,78,2] ------>[0,1,2,3,5,56,78]
merci d'avance.
Version imprimable
Bonsoir,
je cherche une fonction permettant d'ordonner une liste d'entiers (tous differents).
par ex:
l=[1,3,56,0,5,78,2] ------>[0,1,2,3,5,56,78]
merci d'avance.
Bonsoir,
C'est un peu un truc de base de python ... il faut au moins lire un tuto :roll:
C.Code:l.sort() # trie la liste directement
Bonsoir Choupi et merci pour la reponse.
mais pour une liste de listes on fait comment ?
l=[[3,5],[-9,7],[2,2],[5,1],[3,0]]---->[[3,0],[5,1],[2,2],[3,5],[-9,7]] (par rapport au 2eme element des sous-listes)
Merci.
Voilà, voilà ....Citation:
Envoyé par john491
En espérant que ça te convienne .Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 >>> l1=[[0, 1], [89, 1], [-45, 7896], [1258745, 4]] >>> l2=[] >>> for toto in l1[:][:] : ... toto.sort() ... l2.append(toto) ... print l2 ... [[0, 1]] [[0, 1], [1, 89]] [[0, 1], [1, 89], [-45, 7896]] [[0, 1], [1, 89], [-45, 7896], [4, 1258745]] >>> print l2 [[-45, 7896], [0, 1], [1, 89], [4, 1258745]]
a+ ;)
je ne connais pas les [:][:] dans
for toto in l1[:][:] :
une petite explication serait la bien venue.
merci.
Ca veut dire que tu parcours la liste principale et les sous-listes dans leur totalité ; c'est en quelque sorte un parcours (ici avec la boucle : ... for toto in l1[:][:] : ...) sur 2 niveaux ... et tu as accès à tous les éléments individuellement (ceux de la liste et ceux de la sous-liste) .Citation:
Envoyé par airod
Mais je m'aperçois que dans cet exemple bien précis, ça ne change pas grand chose de mettre l1[:][:] ou tout simplement l1 :? (à part le l2.sort() en plus après être sorti de la boucle) :
a+ ;)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 >>> l1, l2=[[0, 1], [89, 1], [-45, 7896], [1258745, 4]], [] >>> for toto in l1 : ... toto.sort() ... l2.append(toto) ... print l2 ... [[0, 1]] [[0, 1], [1, 89]] [[0, 1], [1, 89], [-45, 7896]] [[0, 1], [1, 89], [-45, 7896], [4, 1258745]] >>> l2 [[0, 1], [1, 89], [-45, 7896], [4, 1258745]] >>> l2.sort() >>> l2 [[-45, 7896], [0, 1], [1, 89], [4, 1258745]]
Merci tout le monde.
@+:D
J'ai quelques doutes sur les autres méthodes mais ceci ferait l'affaire:
Code:
1
2
3
4 l1=[[0, 1], [89, 1], [-45, 7896], [1258745, 4]] l1.sort(cmp=lambda x,y: cmp(x[1], y[1])) print l1
Ta méthode est très bien (le lambda très utile effectivement), mais à l'arrivée ce n'est pas remis entièrement dans l'ordre croissant, voilà ce que l'on obtient :Citation:
Envoyé par Guigui_
[[0, 1], [89, 1], [1258745, 4], [-45, 7896]]
... et voilà ce que l'on veut :
[[-45, 7896], [0, 1], [1, 89], [4, 1258745]]
... il faut donc refaire un l1.sort() après l1.sort(cmp=lambda x,y: cmp(x[1], y[1]))
Je m'aperçois que :
l1.sort(l1.sort(cmp=lambda x,y: cmp(x[1], y[1]))) fonctionne et affiche bien ce qui est demandé, mais bon je ne suis qu'un débutant ... .
a+
le problème est le suivant:
donc on veut simplement trier par rapport au deuxième élément (peu importe le premier).Citation:
l=[[3,5],[-9,7],[2,2],[5,1],[3,0]]---->[[3,0],[5,1],[2,2],[3,5],[-9,7]] (par rapport au 2eme element des sous-listes)
Ta méthode tri par rapport au plus petit élément de chaque sous-liste (et tri en plus chaque sous-liste).
Ok, ok, je m'incline ;) .Citation:
Envoyé par Guigui_
a+