A voir également:
- [Python] manipuler un string
- Citizen code python avis - Accueil - Outils
- Ce programme est écrit en python ✓ - Forum Python
- Vli product string - Forum Matériel & Système
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
6 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
3 déc. 2005 à 18:07
3 déc. 2005 à 18:07
Salut,
Tout d'abord tu crées une liste de chiffre (mais en caractères):
Metton que tu aies cette chaine à vérifier:
Il suffit de faire un test d'appartenance à chiffres pour chaque caractère, et si un élément n'appartient pas à chiffres, on l'élimine.
Et voilà.
Il doit y avoir plus rapide je pense....
Tout d'abord tu crées une liste de chiffre (mais en caractères):
chiffres= ('1','2','3','4','5','6','7','8','9')
Metton que tu aies cette chaine à vérifier:
chaine="jsldkgh\rm.qeigj534qshfsgn\n"
Il suffit de faire un test d'appartenance à chiffres pour chaque caractère, et si un élément n'appartient pas à chiffres, on l'élimine.
for caractere in chaine: if not caractere in chiffre: chaine=chaine.split(caractere) chaine="".join(chaine)
Et voilà.
Il doit y avoir plus rapide je pense....
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
6 déc. 2005 à 17:09
6 déc. 2005 à 17:09
Coucou, re,
Dans mon programme (ich bin keloss) je tente de separer une liste en deux: avec un sur 2 elements de la premiere liste dans chaque liste fille.
J'ai commence par faire:
Ahem, evidemment si on a 2 fois le meme element dans la liste mere ca fausse tout..
J'ai donc ruse:
Notez la fonction recursive ;-) (en fait j'avais survole le manuel de Ocaml juste avant).
Mais y a-t-il une technique plus rapide (un moyen de slicer une liste avec un pas defini?), plus malin, plus cool: un truc qui pythonne?!
Peace,
Dans mon programme (ich bin keloss) je tente de separer une liste en deux: avec un sur 2 elements de la premiere liste dans chaque liste fille.
J'ai commence par faire:
def getxnylist(listemere): xlist = [n for n in listemere if listemere.index(n) % 2 == 0] ylist = [n for n in listemere if listemere.index(n) % 2 != 0] return xlist, ylist
Ahem, evidemment si on a 2 fois le meme element dans la liste mere ca fausse tout..
J'ai donc ruse:
def getxlist(firstlist): lx = [] if firstlist: lx = [firstlist[0]] + getxlist(firstlist[2:]) return lx def getylist(firstlist): ly = [] if firstlist: ly = [firstlist[1]] + getylist(firstlist[2:]) return ly def getxnylist(firstlist): """Creates two lists. Each list has one out of two elements of the first list. The first list will represent x-values, the second y-values.""" lx = getxlist(firstlist) ly = getylist(firstlist) return lx, ly
Notez la fonction recursive ;-) (en fait j'avais survole le manuel de Ocaml juste avant).
Mais y a-t-il une technique plus rapide (un moyen de slicer une liste avec un pas defini?), plus malin, plus cool: un truc qui pythonne?!
Peace,
--Kilian:
Merci pour cette reponse eclaire! Je vous tiens au courant..
Je precise, en fait j'essaie d'ecrire un programme pour faire un regression lineaire:
Il faut ouvrir un fichier de donnees (juste des coordonnees). Comme file.read() pond une string, je dois en extraire les coordonnees que je vais mettre dans une liste.
Ensuite on verra pour la manipulation des donnees..
Merci pour cette reponse eclaire! Je vous tiens au courant..
Je precise, en fait j'essaie d'ecrire un programme pour faire un regression lineaire:
Il faut ouvrir un fichier de donnees (juste des coordonnees). Comme file.read() pond une string, je dois en extraire les coordonnees que je vais mettre dans une liste.
Ensuite on verra pour la manipulation des donnees..
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
4 déc. 2005 à 22:59
4 déc. 2005 à 22:59
Ok. Ben si tu as un soucis n'hésite pas ....
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
6 déc. 2005 à 17:15
6 déc. 2005 à 17:15
Bon mais j'ai tout de meme une beta-beta version a vous offrir (pour ces foules silencieuses qui attendaient un programme de regression lineaire..)
Bon c'est un debut :-(
Sinon est-ce que quelqu'un connait un bon tuto sur les librairies standard, comme sys et os: ca m'a l'air vachement marrant, j'ai hate de tester les system calls et les flags et tout et tout (nohup here i come!).
Peace,
import sys def main(): """Will calculate a simple linear regression.""" try: filename = raw_input("Which file to import? ") f = open(filename, "r") try: stringdata = f.read() f.close() okdata = convert(stringdata) xlist, ylist = getxnylist(okdata) T = len(xlist) Ex = sum(xlist) Ey = sum(ylist) Exsq = listsqsum(xlist) Exy = listxysum(okdata) b2 = (T*Exy - Ex*Ey)/(T*Exsq - Ex**2) b1 = (Ey/T) - b2*(Ex/T) print "yt = " + str(b1) + " + (" + str(b2) + ")Xt" except ValueError: print "Invalid values in there, sorry, only take numbers.." sys.exit() except IOError: print "File does not exist!" sys.exit() def convert(ustring): """Formats input text file into a list of floating numbers. Admits anything as separators between numbers but '.'. Will take all nu- bers in consecutively, ignoring anything in between. Make sure your x-values are first.""" accepted = ('.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9') for char in ustring: if not char in accepted: ustring = ustring.split(char)#knock off anything not in ustring = " ".join(ustring)#accepted, replace by whitespace ustring = ustring.split()#then split on whitespace ustring = [float(num) for num in ustring]#make sure numbers are decimals return ustring def alternativeconvert(ustring): """Formats through regular expression.""" pat = re.compile('[^0-9.]')#import re.. ustring = re.split(pat, ' ', ustring) ustring = ustring.split() ustring = [decimal.Decimal(num) for num in ustring]#import decimal.. return ustring def getxlist(firstlist): lx = [] if firstlist: lx = [firstlist[0]] + getxlist(firstlist[2:]) return lx def getylist(firstlist): ly = [] if firstlist: ly = [firstlist[1]] + getylist(firstlist[2:]) return ly def getxnylist(firstlist): """Creates two lists. Each list has one out of two elements of the first list. The first list will represent x-values, the second y-values.""" lx = getxlist(firstlist) ly = getylist(firstlist) if len(lx) != len(ly): print "Missing coordinates.. Make sure you have pairs." sys.exit() else: pass return lx, ly def listsqsum(l): """Sums the squares of the elements of a list.""" total = 0 if l: total = (l[0])**2 + listsqsum(l[1:]) return total def listxysum(l): """Sums the product of the l-list elements two by two.""" total = 0 if l: total = l[0]*l[1] + listxysum(l[2:]) return total if __name__ == "__main__": main() #TODO: #code a general summation function --> summation(expression, indexstart, indexstop) #as yet one can only calculate y=b1+b2x --> allow for different transformations on x #expand simple linear regression to multiple regression #add standard errors, R**2 and other interesting values #def summation(expr, i=0, n):
Bon c'est un debut :-(
Sinon est-ce que quelqu'un connait un bon tuto sur les librairies standard, comme sys et os: ca m'a l'air vachement marrant, j'ai hate de tester les system calls et les flags et tout et tout (nohup here i come!).
Peace,
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
6 déc. 2005 à 20:41
6 déc. 2005 à 20:41
Oui il y a un truc plus cool en quelques sortes :-)
Pour une liste ou une chaîne tu as
liste [premier index : dernier index : tous les n index]
Par exemple si
Voilà ce que donneront quelques tests:
liste [1:-2:2] donnera [1, 3, 5, 7]
C'est à dir liste à partir du second caractère jusqu'au -2 ème (un nombre négatif, ça signifie en partant de la fin) et tous les deux index.
Si tu ne mets rien sauf dans le troisième indice: liste [::2], alors il considèrera depuis le premier caractère jusqu'au dernier et tous les deux caractères.
Tu as je ne sais combien de combinaisons.... :-)
def getxlist(firstlist): return firstlist[::2] def getylist(firstlist): return firstlist[1::2]
Pour une liste ou une chaîne tu as
liste [premier index : dernier index : tous les n index]
Par exemple si
liste=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Voilà ce que donneront quelques tests:
liste [1:-2:2] donnera [1, 3, 5, 7]
C'est à dir liste à partir du second caractère jusqu'au -2 ème (un nombre négatif, ça signifie en partant de la fin) et tous les deux index.
Si tu ne mets rien sauf dans le troisième indice: liste [::2], alors il considèrera depuis le premier caractère jusqu'au dernier et tous les deux caractères.
Tu as je ne sais combien de combinaisons.... :-)
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
6 déc. 2005 à 20:48
6 déc. 2005 à 20:48
Ah et si tu mets un nombre négatif dans le troisième indice:
Alors il te ressortira la liste tous les deux éléments et à l'envers :-)
Ca pythonne comme il faut!
liste [::-2]
Alors il te ressortira la liste tous les deux éléments et à l'envers :-)
Ca pythonne comme il faut!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question