dans le code vb que j'essaie d'adapter en python, je suis en ce moment sur
un tri fusion (composé de 2 fonctions que je reproduis plus bas).
En gros on a un tableau Tab à trier en entrée et 2 tableaux en sortie :
- le tableau Res qui est le tableau Tab trié
- le tableau Ordre qui contient les index des éléments de Res dans le
tableau initial
(restent les paramètres debut qui est initialement à 0 et nbelt qui est le
nombre d'éléments à trier)
La méthode sort() du type 'list' me conviendrait tout à fait mais je suis un
peu coincé avec le tableau d'index. Est-ce qu'il existe une lib standard qui
permettrait de l'obtenir, ou faut-il que je réécrive les fonctions vb ?
Ou encore y a-t-il une notion dans la philosophie python qui me permettrait
d'y arriver autrement ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yermat
Sébastien Kirche wrote:
Bonjour, [...]
En gros on a un tableau Tab à trier en entrée et 2 tableaux en sortie : - le tableau Res qui est le tableau Tab trié - le tableau Ordre qui contient les index des éléments de Res dans le tableau initial [...]
Ou encore y a-t-il une notion dans la philosophie python qui me permettrait d'y arriver autrement ?
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python. Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de l'efficacité ?
tab = [1, 7, 3, 8] aux = zip(tab, range(len(tab))) aux.sort() aux [(1, 0), (3, 2), (7, 1), (8, 3)]
res = [o for (o, i) in aux] res [1, 3, 7, 8]
ordre = [i for (o,i) in aux] ordre [0, 2, 1, 3]
-- Cordialement, Yermat
Sébastien Kirche wrote:
Bonjour,
[...]
En gros on a un tableau Tab à trier en entrée et 2 tableaux en sortie :
- le tableau Res qui est le tableau Tab trié
- le tableau Ordre qui contient les index des éléments de Res dans le
tableau initial
[...]
Ou encore y a-t-il une notion dans la philosophie python qui me permettrait
d'y arriver autrement ?
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python.
Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de
l'efficacité ?
tab = [1, 7, 3, 8]
aux = zip(tab, range(len(tab)))
aux.sort()
aux
[(1, 0), (3, 2), (7, 1), (8, 3)]
En gros on a un tableau Tab à trier en entrée et 2 tableaux en sortie : - le tableau Res qui est le tableau Tab trié - le tableau Ordre qui contient les index des éléments de Res dans le tableau initial [...]
Ou encore y a-t-il une notion dans la philosophie python qui me permettrait d'y arriver autrement ?
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python. Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de l'efficacité ?
tab = [1, 7, 3, 8] aux = zip(tab, range(len(tab))) aux.sort() aux [(1, 0), (3, 2), (7, 1), (8, 3)]
res = [o for (o, i) in aux] res [1, 3, 7, 8]
ordre = [i for (o,i) in aux] ordre [0, 2, 1, 3]
-- Cordialement, Yermat
Sébastien Kirche
Le 23 Feb 2005, Yermat a formulé :
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python. Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de l'efficacité ?
tab = [1, 7, 3, 8] aux = zip(tab, range(len(tab))) aux.sort() aux [(1, 0), (3, 2), (7, 1), (8, 3)]
res = [o for (o, i) in aux] res [1, 3, 7, 8]
ordre = [i for (o,i) in aux] ordre [0, 2, 1, 3]
Excellent !!! Et concis. Merci.
Pour l'efficacité, je verrai bien ce que ça donne mais c'est certainement plus rapide que le code vb (.net).
Je vais faire tourner ça avec des tableaux moyens (de plusieurs centaines ou milliers de valeurs) mais ponctuellement.
-- Sébastien Kirche
Le 23 Feb 2005, Yermat a formulé :
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python.
Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de
l'efficacité ?
tab = [1, 7, 3, 8]
aux = zip(tab, range(len(tab)))
aux.sort()
aux
[(1, 0), (3, 2), (7, 1), (8, 3)]
res = [o for (o, i) in aux]
res
[1, 3, 7, 8]
ordre = [i for (o,i) in aux]
ordre
[0, 2, 1, 3]
Excellent !!! Et concis. Merci.
Pour l'efficacité, je verrai bien ce que ça donne mais c'est certainement
plus rapide que le code vb (.net).
Je vais faire tourner ça avec des tableaux moyens (de plusieurs centaines ou
milliers de valeurs) mais ponctuellement.
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python. Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de l'efficacité ?
tab = [1, 7, 3, 8] aux = zip(tab, range(len(tab))) aux.sort() aux [(1, 0), (3, 2), (7, 1), (8, 3)]
res = [o for (o, i) in aux] res [1, 3, 7, 8]
ordre = [i for (o,i) in aux] ordre [0, 2, 1, 3]
Excellent !!! Et concis. Merci.
Pour l'efficacité, je verrai bien ce que ça donne mais c'est certainement plus rapide que le code vb (.net).
Je vais faire tourner ça avec des tableaux moyens (de plusieurs centaines ou milliers de valeurs) mais ponctuellement.
-- Sébastien Kirche
Encolpe DEGOUTE
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 Feb 2005, Yermat a formulé :
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python. Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de l'efficacité ?
tab = [1, 7, 3, 8] aux = zip(tab, range(len(tab))) aux.sort() aux [(1, 0), (3, 2), (7, 1), (8, 3)]
res = [o for (o, i) in aux] res [1, 3, 7, 8]
ordre = [i for (o,i) in aux] ordre [0, 2, 1, 3]
Excellent !!! Et concis. Merci.
Pour l'efficacité, je verrai bien ce que ça donne mais c'est certainement plus rapide que le code vb (.net).
Je vais faire tourner ça avec des tableaux moyens (de plusieurs centaines ou milliers de valeurs) mais ponctuellement.
Pourquoi ne pas utiliser sort() tout simplement ?
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 Feb 2005, Yermat a formulé :
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python.
Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de
l'efficacité ?
tab = [1, 7, 3, 8]
aux = zip(tab, range(len(tab)))
aux.sort()
aux
[(1, 0), (3, 2), (7, 1), (8, 3)]
res = [o for (o, i) in aux]
res
[1, 3, 7, 8]
ordre = [i for (o,i) in aux]
ordre
[0, 2, 1, 3]
Excellent !!! Et concis. Merci.
Pour l'efficacité, je verrai bien ce que ça donne mais c'est certainement
plus rapide que le code vb (.net).
Je vais faire tourner ça avec des tableaux moyens (de plusieurs centaines ou
milliers de valeurs) mais ponctuellement.
Pourquoi ne pas utiliser sort() tout simplement ?
--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 Feb 2005, Yermat a formulé :
Cela a déjà été discuté plusieurs fois ici ou dans comp.lang.python. Je ne sais plus la conclusion mais voici un code fonctionnel. Quid de l'efficacité ?
tab = [1, 7, 3, 8] aux = zip(tab, range(len(tab))) aux.sort() aux [(1, 0), (3, 2), (7, 1), (8, 3)]
res = [o for (o, i) in aux] res [1, 3, 7, 8]
ordre = [i for (o,i) in aux] ordre [0, 2, 1, 3]
Excellent !!! Et concis. Merci.
Pour l'efficacité, je verrai bien ce que ça donne mais c'est certainement plus rapide que le code vb (.net).
Je vais faire tourner ça avec des tableaux moyens (de plusieurs centaines ou milliers de valeurs) mais ponctuellement.
Pourquoi ne pas utiliser sort() tout simplement ?
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Sébastien Kirche
Le 23 fév 2005, Encolpe DEGOUTE vraute :
Pourquoi ne pas utiliser sort() tout simplement ?
Compatibilité avec le reste des fonctions que j'essaie de convertir.
Ces routines constituent des «briques» élémentaires sur lesquelles des modules plus élaborés s'appuient.
Je ne souhaite pas tout réécrire dans un premier temps mais réécrire en python les fonctions de base et conserver en l'état le fonctionnement des modules.
Sort m'aurait suffi, mais j'ai un module client qui a besoin de la correspondance entre les données non triées et celles qui le sont.
Voilà.
-- Sébastien Kirche
Le 23 fév 2005, Encolpe DEGOUTE vraute :
Pourquoi ne pas utiliser sort() tout simplement ?
Compatibilité avec le reste des fonctions que j'essaie de convertir.
Ces routines constituent des «briques» élémentaires sur lesquelles des
modules plus élaborés s'appuient.
Je ne souhaite pas tout réécrire dans un premier temps mais réécrire en
python les fonctions de base et conserver en l'état le fonctionnement des
modules.
Sort m'aurait suffi, mais j'ai un module client qui a besoin de la
correspondance entre les données non triées et celles qui le sont.
Compatibilité avec le reste des fonctions que j'essaie de convertir.
Ces routines constituent des «briques» élémentaires sur lesquelles des modules plus élaborés s'appuient.
Je ne souhaite pas tout réécrire dans un premier temps mais réécrire en python les fonctions de base et conserver en l'état le fonctionnement des modules.
Sort m'aurait suffi, mais j'ai un module client qui a besoin de la correspondance entre les données non triées et celles qui le sont.
Voilà.
-- Sébastien Kirche
Encolpe DEGOUTE
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE vraute :
Pourquoi ne pas utiliser sort() tout simplement ?
Compatibilité avec le reste des fonctions que j'essaie de convertir.
Ces routines constituent des «briques» élémentaires sur lesquelles des modules plus élaborés s'appuient.
Je ne souhaite pas tout réécrire dans un premier temps mais réécrire en python les fonctions de base et conserver en l'état le fonctionnement des modules.
Sort m'aurait suffi, mais j'ai un module client qui a besoin de la correspondance entre les données non triées et celles qui le sont.
Correspondance ? C'est-à-dire ? Si deux tris donnent le même résultat, la correspondance est la même.
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE vraute :
Pourquoi ne pas utiliser sort() tout simplement ?
Compatibilité avec le reste des fonctions que j'essaie de convertir.
Ces routines constituent des «briques» élémentaires sur lesquelles des
modules plus élaborés s'appuient.
Je ne souhaite pas tout réécrire dans un premier temps mais réécrire en
python les fonctions de base et conserver en l'état le fonctionnement des
modules.
Sort m'aurait suffi, mais j'ai un module client qui a besoin de la
correspondance entre les données non triées et celles qui le sont.
Correspondance ? C'est-à-dire ?
Si deux tris donnent le même résultat, la correspondance est la même.
--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE vraute :
Pourquoi ne pas utiliser sort() tout simplement ?
Compatibilité avec le reste des fonctions que j'essaie de convertir.
Ces routines constituent des «briques» élémentaires sur lesquelles des modules plus élaborés s'appuient.
Je ne souhaite pas tout réécrire dans un premier temps mais réécrire en python les fonctions de base et conserver en l'état le fonctionnement des modules.
Sort m'aurait suffi, mais j'ai un module client qui a besoin de la correspondance entre les données non triées et celles qui le sont.
Correspondance ? C'est-à-dire ? Si deux tris donnent le même résultat, la correspondance est la même.
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Sébastien Kirche
Le 23 fév 2005, Encolpe DEGOUTE a dit :
Correspondance ? C'est-à-dire ?
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin de pouvoir trier un tableau et il a aussi besoin de savoir la position dans le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Si deux tris donnent le même résultat, la correspondance est la même.
Certes.
-- Sébastien Kirche
Le 23 fév 2005, Encolpe DEGOUTE a dit :
Correspondance ? C'est-à-dire ?
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin
de pouvoir trier un tableau et il a aussi besoin de savoir la position dans
le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Si deux tris donnent le même résultat, la correspondance est la même.
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin de pouvoir trier un tableau et il a aussi besoin de savoir la position dans le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Si deux tris donnent le même résultat, la correspondance est la même.
Certes.
-- Sébastien Kirche
Encolpe DEGOUTE
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
Correspondance ? C'est-à-dire ?
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin de pouvoir trier un tableau et il a aussi besoin de savoir la position dans le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Oui. :) C'est une méthode qui sert plutôt pour trier un liste selon un sous-critère d'un élément à la base, mais cela convient dans notre cas:
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément) t_temp = [ (e, t.index(e)) for e in t] print t_temp t_temp.sort()
# la liste trié t_trie = [ e[0] for e in t_temp] print t_trie
# la liste des index avant le tri t_index = [ e[1] for e in t_temp] print t_index
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
Correspondance ? C'est-à-dire ?
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin
de pouvoir trier un tableau et il a aussi besoin de savoir la position dans
le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Oui. :)
C'est une méthode qui sert plutôt pour trier un liste selon un sous-critère
d'un élément à la base, mais cela convient dans notre cas:
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément)
t_temp = [ (e, t.index(e)) for e in t]
print t_temp
t_temp.sort()
# la liste trié
t_trie = [ e[0] for e in t_temp]
print t_trie
# la liste des index avant le tri
t_index = [ e[1] for e in t_temp]
print t_index
--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
Correspondance ? C'est-à-dire ?
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin de pouvoir trier un tableau et il a aussi besoin de savoir la position dans le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Oui. :) C'est une méthode qui sert plutôt pour trier un liste selon un sous-critère d'un élément à la base, mais cela convient dans notre cas:
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément) t_temp = [ (e, t.index(e)) for e in t] print t_temp t_temp.sort()
# la liste trié t_trie = [ e[0] for e in t_temp] print t_trie
# la liste des index avant le tri t_index = [ e[1] for e in t_temp] print t_index
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Encolpe DEGOUTE
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
Correspondance ? C'est-à-dire ?
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin de pouvoir trier un tableau et il a aussi besoin de savoir la position dans le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Oui. :) C'est une méthode qui sert plutôt pour trier un liste selon un sous-critère d'un élément à la base, mais cela convient dans notre cas:
C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément) t_temp = [ (e, t.index(e)) for e in t] print t_temp t_temp.sort()
# la liste trié t_trie = [ e[0] for e in t_temp] print t_trie
# la liste des index avant le tri t_index = [ e[1] for e in t_temp] print t_index
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
Correspondance ? C'est-à-dire ?
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin
de pouvoir trier un tableau et il a aussi besoin de savoir la position dans
le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Oui. :)
C'est une méthode qui sert plutôt pour trier un liste selon un sous-critère
d'un élément à la base, mais cela convient dans notre cas:
C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément)
t_temp = [ (e, t.index(e)) for e in t]
print t_temp
t_temp.sort()
# la liste trié
t_trie = [ e[0] for e in t_temp]
print t_trie
# la liste des index avant le tri
t_index = [ e[1] for e in t_temp]
print t_index
--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
Correspondance ? C'est-à-dire ?
Je n'ai pas décortiqué exactement pourquoi mais j'ai un module qui a besoin de pouvoir trier un tableau et il a aussi besoin de savoir la position dans le tableau non trié des données triées.
Je ne sais pas si je suis clair... :/
Oui. :) C'est une méthode qui sert plutôt pour trier un liste selon un sous-critère d'un élément à la base, mais cela convient dans notre cas:
C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément) t_temp = [ (e, t.index(e)) for e in t] print t_temp t_temp.sort()
# la liste trié t_trie = [ e[0] for e in t_temp] print t_trie
# la liste des index avant le tri t_index = [ e[1] for e in t_temp] print t_index
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Yermat
Encolpe DEGOUTE wrote:
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
[...] C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément) t_temp = [ (e, t.index(e)) for e in t]
Et en plus long car ici tu fais appel à t.index(e) qui doit parcourir la liste pour retrouver son index... Ce n'est donc plus linéaire.
De plus si l'élément e est présent plusieurs fois dans la liste, il n'y aura référence qu'au premier index. Dans l'autre algo., le tri se fera d'abord sur l'élément puis sur l'index d'origine. Tous les index d'origines seront donc présents...
-- Yermat
Encolpe DEGOUTE wrote:
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
[...]
C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément)
t_temp = [ (e, t.index(e)) for e in t]
Et en plus long car ici tu fais appel à t.index(e) qui doit parcourir la
liste pour retrouver son index... Ce n'est donc plus linéaire.
De plus si l'élément e est présent plusieurs fois dans la liste, il n'y
aura référence qu'au premier index. Dans l'autre algo., le tri se fera
d'abord sur l'élément puis sur l'index d'origine. Tous les index
d'origines seront donc présents...
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
[...] C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément) t_temp = [ (e, t.index(e)) for e in t]
Et en plus long car ici tu fais appel à t.index(e) qui doit parcourir la liste pour retrouver son index... Ce n'est donc plus linéaire.
De plus si l'élément e est présent plusieurs fois dans la liste, il n'y aura référence qu'au premier index. Dans l'autre algo., le tri se fera d'abord sur l'élément puis sur l'index d'origine. Tous les index d'origines seront donc présents...
-- Yermat
Encolpe DEGOUTE
Dans fr.comp.lang.python, Yermat écrivit:
Encolpe DEGOUTE wrote:
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
[...] C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément) t_temp = [ (e, t.index(e)) for e in t]
Et en plus long car ici tu fais appel à t.index(e) qui doit parcourir la liste pour retrouver son index... Ce n'est donc plus linéaire.
De plus si l'élément e est présent plusieurs fois dans la liste, il n'y aura référence qu'au premier index. Dans l'autre algo., le tri se fera d'abord sur l'élément puis sur l'index d'origine. Tous les index d'origines seront donc présents...
oui. cela m'apprendra à ne pas relire le code.
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Yermat écrivit:
Encolpe DEGOUTE wrote:
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
[...]
C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément)
t_temp = [ (e, t.index(e)) for e in t]
Et en plus long car ici tu fais appel à t.index(e) qui doit parcourir la
liste pour retrouver son index... Ce n'est donc plus linéaire.
De plus si l'élément e est présent plusieurs fois dans la liste, il n'y
aura référence qu'au premier index. Dans l'autre algo., le tri se fera
d'abord sur l'élément puis sur l'index d'origine. Tous les index
d'origines seront donc présents...
oui.
cela m'apprendra à ne pas relire le code.
--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales
Dans fr.comp.lang.python, Encolpe DEGOUTE écrivit:
Dans fr.comp.lang.python, Sébastien Kirche écrivit:
Le 23 fév 2005, Encolpe DEGOUTE a dit :
[...] C'est la même solution que Yermat, mais en moins condensé.
t = ['e', 'a', 'j', 'p', 'f']
# on crée un tableau temporaire avec (l'élement, l'index de l'élément) t_temp = [ (e, t.index(e)) for e in t]
Et en plus long car ici tu fais appel à t.index(e) qui doit parcourir la liste pour retrouver son index... Ce n'est donc plus linéaire.
De plus si l'élément e est présent plusieurs fois dans la liste, il n'y aura référence qu'au premier index. Dans l'autre algo., le tri se fera d'abord sur l'élément puis sur l'index d'origine. Tous les index d'origines seront donc présents...
oui. cela m'apprendra à ne pas relire le code.
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales