Programmation Python/Type de données complexe
Sections |
[modifier] Les chaînes de caractères
Une chaîne de caractères se déclare par l'utilisation de single quote (') ou de double quote (") :
chaine='une chaine de caractère' chaine2="une autre chaîne de caractères" |
| chaine de caractère : Déclaration d'une chaîne de caractères |
On peut aussi imbriquer les chaînes de caractères :
chaine='Il lui a dit "Bonjour!"'
pour insérer des caractères spéciaux (saut de ligne,tabulation,etc), il est nécessaire de les encoder :
- Retour de ligne: \n
- Tabulation: \t
- backslash: \\
- etc...
Exemple :
print "une phrase\npar ligne"
Résultat :
une phrase par ligne
Sinon on peut faire des chaînes de caractères entre triple quotes (' ' 'patati' ' ') ou triple guillemets ("""patata"""), dans ces cas, les guillemets et les quotes sont autorisés à l'intérieur, de même que les sauts de lignes.
Exemple :
print """abc, ", \n q go"""
Résultat :
abc, ", q go
de nombreuses méthodes sont associées à l'objet chaîne de caractère (str) :
[modifier] Constructeur
les fonctions
str()
et
repr()
permettent de transformer un objet python quelconque en chaîne de caractères. Ces deux fonctions sont différentes :
str('chaine')
retournera 'chaine' tandis que
repr('chaine')
retournera "'chaine'".
[modifier] Autres méthodes
Les principale méthodes sont :
- capitalize() qui retourne la chaîne avec le premier caractère en majuscule
- index(car) qui retourne la position du caractère car ou déclenche une erreur (IndexError)
- replace(old,new) remplace la sous-chaîne old par new
- split(car) renvoie une liste en séparant la chaîne par le caractère car. Si car n'est pas donné, split sépare par les sauts de ligne et les espaces
- strip() enlève les espaces au début et à la fin
- upper() met en majuscule
- lower() en minuscule
- ... (voir le résultat de help(str) pour la liste complète)
[modifier] Les listes
Les listes sont des tableaux.
L'encodage est comme suit :
>>MaListe=['a','b','c'] >>MaListe ['a','b','c']
Une sortie indicée donne :
>>Maliste[0] 'a'
Une séquence d'indice donne :
>>Maliste[0:2] ['a','b']
Tableau à trois lignes :
Tab = range(1, 5) Tab[1] = u'ligne 1' Tab[2] = u'ligne 2' Tab[3] = u'ligne 3' for ligne in range(1,4): print Tab[ligne]
Tableau à deux dimensions :
ligne = 3 colonne = 2 Tab = [[0] * (colonne+1) for _ in range(ligne+1)] Tab[1][1] = u'1.1' Tab[1][2] = u'1.2' Tab[2][1] = u'2.1' Tab[2][2] = u'2.2' Tab[3][1] = u'3.1' Tab[3][2] = u'3.2' for l in range(1,ligne+1): for c in range(1,colonne+1): print Tab[l][c]
[modifier] Les listes sont des objets
A ce titre, elles disposent de "méthodes".
L'exemple suivant qui fait appel à la méthode "append" de l'objet "liste" illustre ce concept.
Il s'agit de remplir la hotte du Père Noël.
#!/usr/bin/python # -*- coding: iso8859-1 -*- # on prépare une liste encore vide cadeaux = [] # on va ajouter des éléments à la liste unCadeau = "" # la suite des éléments à introduire dans la liste est définie par l'utilisateur # lorsqu'il a terminé, l'utilisateur indique le mot "fin" qui ne sera pas introduit dans la liste while unCadeau <> "fin": unCadeau = raw_input ("Père Noël, je voudrais que tu m'apportes ") # si l'utilisateur n'a pas frappé "fin", le mot est ajouté à la liste if unCadeau <> "fin": cadeaux.append(unCadeau) # finalement, on écrit la suite des éléments introduits dans la liste for chaqueCadeau in cadeaux: print chaqueCadeau
[modifier] Les dictionnaires
Le dictionnaire ou tableau associatif fonctionne dans la même logique.
Ajout d'une occurrence à la pile
>>> tel = {'jack': 4098, 'sape': 4139} >>> tel['guido'] = 4127 >>> tel {'sape': 4139, 'guido': 4127, 'jack': 4098}
Sortie d'un élément de la pile
>>> tel['jack'] 4098
Suppression et ajout d'un élément
>>> del tel['sape'] >>> tel['irv'] = 4127 >>> tel {'guido': 4127, 'irv': 4127, 'jack': 4098}
Sortie des clés
>>> tel.keys() ['guido', 'irv', 'jack'] >>> tel.has_key('guido') 1
[modifier] Les tuples
Python propose un type de données appelé tuple, qui est assez semblable à une liste mais qui n'est pas modifiable.
Du point de vue de la syntaxe, un tuple est une collection d'éléments séparés par des virgules :
>>> tuple = 'a', 'b', 'c', 'd', 'e' >>> print tuple ('a', 'b', 'c', 'd', 'e')
Bien que cela ne soit pas nécessaire, il est vivement conseillé de mettre le tuple en évidence en l'enfermant dans une paire de parenthèses, comme l'instruction print de Python le fait elle-même (il s'agit simplement d'améliorer la lisibilité du code, mais vous savez que c'est important) :
>>> tuple = ('a', 'b', 'c', 'd', 'e')
Les opérations que l'on peut effectuer sur des tuples sont syntaxiquement similaires à celles que l'on effectue sur les listes, si ce n'est que les tuples ne sont pas modifiables :
>>> print tuple[2:4] ('c', 'd') >>> tuple[1:3] = ('x', 'y') ==> ***** erreur ***** >>> tuple = ('André',) + tuple[1:] >>> print tuple ('André', 'b', 'c', 'd', 'e')
Remarquez qu'il faut toujours au moins une virgule pour définir un tuple (le dernier exemple ci-dessus utilise un tuple contenant un seul élément : 'André'). Vous comprendrez l'utilité des tuples petit à petit. Signalons simplement ici qu'ils sont préférables aux listes partout où l'on veut être certain que les données transmises ne soient pas modifiées par erreur au sein d'un programme. En outre, les tuples sont moins « gourmands » en ressources système (ils occupent moins de place en mémoire).