Comprendre les listes dans Python 3

introduction

Unlist est une structure de données en Python qui est une séquence ordonnée mutable ou modifiable d'éléments. Chaque élément ou valeur figurant dans une liste est appelé un élément. Tout comme lesstrings sont définis comme des caractères entre guillemets, les listes sont définies en ayant des valeurs entre crochets[ ].

Les listes sont très utiles lorsque vous souhaitez travailler avec de nombreuses valeurs connexes. Ils vous permettent de conserver des données qui appartiennent ensemble, de condenser votre code et d'effectuer les mêmes méthodes et opérations sur plusieurs valeurs à la fois.

Lorsque vous réfléchissez aux listes Python et autres structures de données qui sont des types de collections, il est utile de prendre en compte toutes les différentes collections que vous avez sur votre ordinateur: votre assortiment de fichiers, vos listes de lecture de chansons, les signets de votre navigateur, vos courriels, la collection de vidéos. vous pouvez accéder à un service de streaming, et plus encore.

Pour commencer, créons une liste contenant des éléments du type de données chaîne:

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']

Lorsque nous imprimons la liste, la sortie ressemble exactement à celle que nous avons créée:

print(sea_creatures)
Output['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']

En tant que séquence ordonnée d'éléments, chaque élément d'une liste peut être appelé individuellement, par indexation. Les listes sont un type de données composé constitué de parties plus petites et sont très souples car elles peuvent avoir des valeurs ajoutées, supprimées et modifiées. Lorsque vous devez stocker un grand nombre de valeurs ou effectuer plusieurs itérations, et que vous souhaitez pouvoir modifier facilement ces valeurs, vous souhaiterez probablement utiliser des types de données de liste.

Dans ce didacticiel, nous allons examiner certaines des manières dont nous pouvons utiliser les listes en Python.

Listes d'indexation

Chaque élément d'une liste correspond à un numéro d'index, qui est une valeur entière, commençant par le numéro d'index0.

Pour la listesea_creatures, la répartition de l'index ressemble à ceci:

'requin' 'seiche' 'calamar' «crevette mante» 'anémone'

0

1

2

3

4

Le premier élément, la chaîne'shark' commence à l'index0, et la liste se termine à l'index4 avec l'élément'anemone'.

Chaque élément d’une liste Python ayant un numéro d’indice correspondant, nous pouvons accéder aux listes et les manipuler de la même manière que nous le pouvons avec d’autres types de données séquentielles.

Nous pouvons maintenant appeler un élément discret de la liste en faisant référence à son numéro d'index:

print(sea_creatures[1])
Outputcuttlefish

Les numéros d'index de cette liste vont de0 à4, comme indiqué dans le tableau ci-dessus. Donc, pour appeler chacun des éléments individuellement, nous nous référons aux numéros d’index comme ceci:

sea_creatures[0] = 'shark'
sea_creatures[1] = 'cuttlefish'
sea_creatures[2] = 'squid'
sea_creatures[3] = 'mantis shrimp'
sea_creatures[4] = 'anemone'

Si nous appelons la listesea_creatures avec un numéro d'index supérieur à 4, elle sera hors de portée car elle ne sera pas valide:

print(sea_creatures[18])
OutputIndexError: list index out of range

En plus des numéros d'index positifs, nous pouvons également accéder aux éléments de la liste avec un numéro d'index négatif, en comptant à rebours à partir de la fin de la liste, à partir de-1. Ceci est particulièrement utile si nous avons une longue liste et que nous voulons localiser un élément vers la fin de la liste.

Pour la même listesea_creatures, la ventilation négative de l'indice ressemble à ceci:

'requin' 'seiche' 'calamar' «crevette mante» 'anémone'

-5

-4

-3

-2

-1

Donc, si nous voulons imprimer l'item'squid' en utilisant son numéro d'index négatif, nous pouvons le faire comme ceci:

print(sea_creatures[-3])
Outputsquid

Nous pouvons concaténer des éléments de chaîne dans une liste avec d'autres chaînes en utilisant l'opérateur+:

print('Sammy is a ' + sea_creatures[0])
OutputSammy is a shark

Nous avons pu concaténer l'élément de chaîne au numéro d'index0 avec la chaîne'Sammy is a '. Nous pouvons également utiliser l'opérateur+ pourconcatenate 2 or more lists together.

Les numéros d’index correspondant aux éléments d’une liste permettent d’accéder à chaque élément d’une liste de manière discrète et de travailler avec ces éléments.

Modification d'éléments dans des listes

Nous pouvons utiliser l'indexation pour modifier des éléments dans la liste en définissant un numéro d'index égal à une valeur différente. Cela nous donne un plus grand contrôle sur les listes, car nous sommes en mesure de modifier et de mettre à jour les éléments qu’elles contiennent.

Si nous voulons changer la valeur de chaîne de l'élément à l'index1 de'cuttlefish' à'octopus', nous pouvons le faire comme ceci:

sea_creatures[1] = 'octopus'

Maintenant, lorsque nous imprimonssea_creatures, la liste sera différente:

print(sea_creatures)
Output['shark', 'octopus', 'squid', 'mantis shrimp', 'anemone']

Nous pouvons également modifier la valeur d'un élément en utilisant plutôt un numéro d'index négatif:

sea_creatures[-3] = 'blobfish'
print(sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']

Maintenant,'blobfish' a remplacé'squid' au numéro d'index négatif de-3 (qui correspond au nombre d'index positif de2).

Pouvoir modifier des éléments dans des listes nous donne la possibilité de modifier et de mettre à jour les listes de manière efficace.

Trancher des listes

Nous pouvons également appeler quelques éléments de la liste. Disons que nous aimerions simplement imprimer les éléments du milieu desea_creatures, nous pouvons le faire en créant unslice. Avec les tranches, nous pouvons appeler plusieurs valeurs en créant une plage de numéros d'index séparés par deux points[x:y]:

print(sea_creatures[1:4])
Output['octopus', 'blobfish', 'mantis shrimp']

Lors de la création d'une tranche, comme dans[1:4], le premier numéro d'index est l'endroit où la tranche commence (inclus), et le deuxième numéro d'index est l'endroit où la tranche se termine (exclusif), c'est pourquoi dans notre exemple ci-dessus les éléments à position,1,2 et3 sont les éléments qui s'impriment.

Si nous voulons inclure l'une ou l'autre des extrémités de la liste, nous pouvons omettre l'un des nombres de la syntaxelist[x:y]. Par exemple, si nous voulons imprimer les 3 premiers éléments de la listesea_creatures - qui seraient'shark','octopus','blobfish' - nous pouvons le faire en tapant:

print(sea_creatures[:3])
Output['shark', 'octopus', 'blobfish']

Cela a imprimé le début de la liste, s'arrêtant juste avant l'index3.

Pour inclure tous les éléments à la fin d'une liste, nous inverserions la syntaxe:

print(sea_creatures[2:])
Output['blobfish', 'mantis shrimp', 'anemone']

Nous pouvons également utiliser des indices négatifs lors du découpage des listes, comme avec les indices positifs:

print(sea_creatures[-4:-2])
print(sea_creatures[-3:])
Output['octopus', 'blobfish']
['blobfish', 'mantis shrimp', 'anemone']

Un dernier paramètre que nous pouvons utiliser avec le découpage est appeléstride, qui fait référence au nombre d'éléments à avancer après la récupération du premier élément de la liste. Jusqu'ici, nous avons omis le paramètre stride, et Python utilise par défaut la foulée de 1, de sorte que chaque élément situé entre deux numéros d'index est récupéré.

La syntaxe de cette construction estlist[x:y:z], avecz faisant référence à la foulée. Faisons une liste plus longue, coupons-la en morceaux et donnez à la foulée une valeur de 2:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

print(numbers[1:11:2])
Output[1, 3, 5, 7, 9]

Notre constructionnumbers[1:11:2] imprime les valeurs entre les numéros d'index comprenant1 et excluant11, puis la valeur de foulée de2 indique au programme d'imprimer uniquement tous les autres éléments.

Nous pouvons omettre les deux premiers paramètres et utiliser stride seul comme paramètre avec la syntaxelist[::z]:

print(numbers[::3])
Output[0, 3, 6, 9, 12]

En imprimant la listenumbers avec la foulée réglée sur3, seul un élément sur trois est imprimé:

0, 1, 2,3, 4, 5,6, 7, 8,9, 10, 11,12

Le découpage de listes avec des indices à la fois positifs et négatifs et l’indication de foulée nous permettent de manipuler les listes et de recevoir le résultat que nous essayons d’obtenir.

Modification des listes avec des opérateurs

Les opérateurs peuvent être utilisés pour apporter des modifications aux listes. Nous allons examiner l'utilisation des+` and `+*+` operators and their compound forms `=+ et*=.

L'opérateur+ peut être utilisé pour concaténer deux ou plusieurs listes ensemble:

sea_creatures = ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']
oceans = ['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

print(sea_creatures + oceans)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

Comme l'opérateur+ peut concaténer, il peut être utilisé pour ajouter un élément (ou plusieurs) sous forme de liste à la fin d'une autre liste. N'oubliez pas de placer l'élément entre crochets:

sea_creatures = sea_creatures + ['yeti crab']
print (sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

L'opérateur* peut être utilisé pour multiplier des listes. Vous devrez peut-être faire des copies de tous les fichiers d'un répertoire sur un serveur ou partager une liste de lecture avec des amis - dans ces cas, vous devrez multiplier les collections de données.

Multiplions la listesea_creatures par 2 et la listeoceans par 3:

print(sea_creatures * 2)
print(oceans * 3)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

En utilisant l'opérateur*, nous pouvons répliquer nos listes par le nombre de fois que nous spécifions.

Nous pouvons également utiliser des formes composées des opérateurs composés+` and `+*+` operators with the assignment operator `+=+`. The `=+ et*= peuvent être utilisés pour remplir des listes de manière rapide et automatisée. Vous pouvez utiliser ces opérateurs pour remplir des listes avec des espaces réservés que vous pouvez modifier ultérieurement avec une entrée fournie par l'utilisateur, par exemple.

Ajoutons un élément sous forme de liste à la listesea_creatures. Cet élément servira d’espace réservé et nous souhaiterions l’ajouter plusieurs fois. Pour ce faire, nous allons utiliser l'opérateur+= avec unfor loop.

for x in range(1,4):
    sea_creatures += ['fish']
    print(sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish', 'fish']

Pour chaque itération de la boucle for, un élément de liste supplémentaire de'fish' est ajouté à la liste d'originesea_creatures.

L'opérateur*= se comporte de la même manière:

sharks = ['shark']

for x in range(1,4):
    sharks *= 2
    print(sharks)
Output['shark', 'shark']
['shark', 'shark', 'shark', 'shark']
['shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

Les opérateurs+` and `+*+` can be used to concatenate lists and multiply lists. The compound operators `=+ et*= peuvent concaténer des listes et multiplier des listes et passer la nouvelle identité à la liste d'origine.

Supprimer un élément d'une liste

Les éléments peuvent être supprimés des listes à l'aide de l'instructiondel. Cela supprimera la valeur du numéro d'index que vous spécifiez dans une liste.

De la listesea_creatures, supprimons l'élément'octopus'. Cet élément est situé à la position d'index de1. Pour supprimer l'élément, nous allons utiliser l'instructiondel puis appeler la variable de liste et le numéro d'index de cet élément:

sea_creatures =['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

del sea_creatures[1]
print(sea_creatures)
Output['shark', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

Maintenant l'élément à la position d'index1, la chaîne'octopus', n'est plus dans notre listesea_creatures.

Nous pouvons également spécifier une plage avec l'instructiondel. Supposons que nous voulions supprimer non seulement l'élément'octopus', mais également'blobfish' et'mantis shrimp'. Nous pouvons appeler une plage ensea_creatures avec l'instructiondel pour accomplir ceci:

sea_creatures =['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

del sea_creatures[1:4]
print(sea_creatures)
Output['shark', 'anemone', 'yeti crab']

En utilisant une plage avec l'instructiondel, nous avons pu supprimer les éléments entre le numéro d'index de1 (inclus) et le numéro d'index de4 (exclusif), nous laissant avec une liste de 3 éléments suite à la suppression de 3 éléments.

L'instructiondel nous permet de supprimer des éléments spécifiques du type de données de liste.

Construire une liste avec des éléments de liste

Les listes peuvent être définies avec des éléments constitués de listes, chaque liste entre crochets étant placée entre les crochets plus grands de la liste parente:

sea_names = [[shark', 'octopus', 'squid', 'mantis shrimp'],['Sammy', 'Jesse', 'Drew', 'Jamie']]

Ces listes dans les listes sont appelées listes imbriquées.

Pour accéder à un élément de cette liste, nous devrons utiliser plusieurs index:

print(sea_names[1][0])
print(sea_names[0][0])
OutputSammy
shark

La première liste, puisqu'elle est égale à un élément, aura le numéro d'index de 0, qui sera le premier numéro de la construction, et la deuxième liste aura le numéro d'index de 1. Dans chaque liste interne imbriquée, il y aura des numéros d'index distincts, que nous appellerons dans le deuxième numéro:

sea_names[0][0] = 'shark'
sea_names[0][1] = 'octopus'
sea_names[0][2] = 'squid'
sea_names[0][3] = 'mantis shrimp'

sea_names[1][0] = 'Sammy'
sea_names[1][1] = 'Jesse'
sea_names[1][2] = 'Drew'
sea_names[1][3] = 'Jamie'

Lorsque vous travaillez avec des listes de listes, il est important de garder à l’esprit que vous devrez vous référer à plus d’un numéro d’index pour pouvoir accéder à des éléments spécifiques de la liste imbriquée appropriée.

Conclusion

Le type de données de liste est un type de données flexible qui peut être modifié au cours de votre programme. Ce tutoriel couvrait les fonctionnalités de base des listes, notamment l'indexation, le découpage en tranches, la modification et la concaténation de listes.

De là, vous pouvez en savoir plus sur l'utilisation des listes en Python en lisant «https://www.digitalocean.com/community/tutorials/how-to-use-list-methods-in-python-3[How To Use List Methods] »et environlist comprehensions pour créer des listes basées sur des listes existantes. Pour en savoir plus sur les types de données en général, vous pouvez lire notre tutoriel «https://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3[Comprendre les types de données]».