[Python] défaire une séquence de séquences
Fermé
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
-
25 sept. 2006 à 17:48
Bob El Ahn Messages postés 42 Date d'inscription dimanche 27 février 2005 Statut Contributeur Dernière intervention 25 juillet 2007 - 11 oct. 2006 à 18:17
Bob El Ahn Messages postés 42 Date d'inscription dimanche 27 février 2005 Statut Contributeur Dernière intervention 25 juillet 2007 - 11 oct. 2006 à 18:17
A voir également:
- [Python] défaire une séquence de séquences
- Citizen code python avis - Accueil - Outils
- Couper des séquences dans une vidéo - Guide
- Python retour à la ligne dans le code - Forum Python
- Error 1962 no operating system found. boot sequence will automatically repeat - Forum Windows 8 / 8.1
7 réponses
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
25 sept. 2006 à 17:51
25 sept. 2006 à 17:51
Oups, la docstring n'est pas tout à fait juste. Enfin.
Mir,
Mir,
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
27 sept. 2006 à 15:52
27 sept. 2006 à 15:52
Tiens, en survolant le tutoriel de Guido je pense que je vais faire un tour du côté du module 'array'..
Mir,
Mir,
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
11 oct. 2006 à 16:39
11 oct. 2006 à 16:39
Tiens j'ai pensé à une autre méthode, pas très clean j'admet..
Certes, c'est un peu jouer sur les mots mais..
J'ai essayé de faire ça avec expressions régulières mais faut que je révise parce que ca le faisait pas.
D'ailleurs doit surement y avoir plus efficace même avec les 'string methods'. M'enfin je trouve que ca pythonne un peu, un tout petit peu.. ;)
Mir,
def listit(seq): flatlist = str(seq) flatlist = flatlist.replace("[",'') flatlist = flatlist.replace("]", '') flatlist = flatlist.replace("(",'') flatlist = flatlist.replace(")", '') flatlist = "[%s]" % flatlist return eval(flatlist)
Certes, c'est un peu jouer sur les mots mais..
J'ai essayé de faire ça avec expressions régulières mais faut que je révise parce que ca le faisait pas.
D'ailleurs doit surement y avoir plus efficace même avec les 'string methods'. M'enfin je trouve que ca pythonne un peu, un tout petit peu.. ;)
Mir,
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
11 oct. 2006 à 17:29
11 oct. 2006 à 17:29
Vive Google Code Search ;-)
(Trouvé là)
l = [('a', 2), ('b', 5), ('t', 6), [1, 2, 'r', (897,777,888), 'hi'], (98, 23, ('i', 7))] import types def _flatten(L,a): for x in L: if type(x) in (types.ListType,types.TupleType): _flatten(x,a) else: a(x) def flatten(L): '''recursively flatten the list or tuple L''' R = [] _flatten(L,R.append) return R print flatten(l)
(Trouvé là)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
11 oct. 2006 à 17:33
11 oct. 2006 à 17:33
Présenté comme ça, c'est un peu mieux:
Ce qui donne: ['a', 2, 'b', 5, 't', 6, 1, 2, 'r', 897, 777, 888, 'hi', 98, 23, 'i', 7]
(Notez la possibilité de déclarer des fonctions locales en Python... très sympa !)
import types def flatten(L): '''Recursively flatten the list or tuple L. Shamelessly heavily inspired from ReportLab_1_20.tgz/reportlab_1_20/reportlab/lib/utils.py ''' def _flatten(L,a): for x in L: if type(x) in (types.ListType,types.TupleType): _flatten(x,a) else: a(x) R = [] _flatten(L,R.append) return R l = [('a', 2), ('b', 5), ('t', 6), [1, 2, 'r', (897,777,888), 'hi'], (98, 23, ('i', 7))] print flatten(l)
Ce qui donne: ['a', 2, 'b', 5, 't', 6, 1, 2, 'r', 897, 777, 888, 'hi', 98, 23, 'i', 7]
(Notez la possibilité de déclarer des fonctions locales en Python... très sympa !)
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
11 oct. 2006 à 17:35
11 oct. 2006 à 17:35
Par contre, je crois qu'il serait plus pythonique d'utiliser isinstance() plutôt que de comparer les type().
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
11 oct. 2006 à 18:17
11 oct. 2006 à 18:17
Merci pour cet exemple, c'est une fonction bien plus élégante que la mienne. Et en plus elle fait pas planter idle/python pour des listes un peu longues..
Faut que j'essaie de comparer la fonction récursive et la fonction 'texte'.. M'enfin j'ai pas encore eu à m'en servir ;)
Mir,
Faut que j'essaie de comparer la fonction récursive et la fonction 'texte'.. M'enfin j'ai pas encore eu à m'en servir ;)
Mir,