Application de structures de données et d'algorithmes en Python (avec exemples)

不言
Libérer: 2018-12-07 17:33:19
avant
3474 Les gens l'ont consulté

Le contenu de cet article concerne l'application de structures de données et d'algorithmes en Python (avec des exemples). Il a une certaine valeur de référence. J'espère qu'il sera utile. pour vous.

Question 1

Il existe maintenant un tuple ou une séquence contenant N éléments qu'il contient et les attribuer simultanément. ? Donner N variables ?

Solution

Toute séquence (objet itérable) peut être décompressée et affectée à plusieurs variables avec une simple instruction d'affectation. Le principe est que le nombre de variables et le nombre d'éléments de séquence doivent être cohérents.

In [3]: p = (4,5)

In [4]: x,y = p

In [5]: x
Out[5]: 4

In [6]: y
Out[6]: 5

In [7]: data = ['ACME', 50, 91.1, (2012, 12, 21)]

In [8]: name, shares, price, date = data

In [9]: name
Out[9]: 'ACME'

In [10]: shares
Out[10]: 50

In [11]: date
Out[11]: (2012, 12, 21)
Copier après la connexion

Si le nombre de variables et le nombre d'éléments de séquence ne correspondent pas, une exception sera générée.

In [12]: p = (x,5)

In [13]: a,b,c = p
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-f5a6e296606a> in <module>()
----> 1 a,b,c = p

ValueError: not enough values to unpack (expected 3, got 2)
Copier après la connexion

Cette mission de décompression peut être utilisée sur n'importe quel objet itérable, pas seulement des listes ou des tuples, mais également des chaînes, des objets fichier, des itérateurs et des générateurs.

In [14]: A = 'hello'

In [15]: a,b,c,d,e = A

In [16]: a
Out[16]: 'h'

In [17]: b
Out[17]: 'e'

In [18]: c
Out[18]: 'l'

In [19]: d
Out[19]: 'l'

In [20]: e
Out[20]: 'o'

In [21]: a,b,c,d,e
Out[21]: ('h', 'e', 'l', 'l', 'o')
Copier après la connexion

Pour ceux qui souhaitent uniquement décompresser une partie de la séquence et supprimer certaines valeurs, utilisez simplement des noms de variables inutiles pour occuper les éléments de la séquence aux positions correspondantes.

In [22]: data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]

In [23]: _, shares, price, _ = data

In [24]: shares
Out[24]: 50

In [25]: price
Out[25]: 91.1
Copier après la connexion

Question 2

Si le nombre d'éléments d'un objet itérable dépasse le nombre de variables, une ValueError sera levée. Alors comment extraire N éléments de cet objet itérable ?

Solution

L'expression astérisque de Python peut résoudre ce problème. Par exemple, vous étudiez un cours et, à la fin du semestre, vous souhaitez calculer la note moyenne des devoirs, mais exclure la première et la dernière note. S’il n’y avait que quatre fractions, vous pourriez simplement les attribuer manuellement, mais que se passerait-il s’il y en avait 24 ? À ce stade, l'expression astérisque est utile :
Dans l'appel de fonction, la correspondance est simplement basée sur la position du nom de la variable, mais l'utilisation de name=value indique à Python de toujours correspondre en fonction du nom de la variable. C’est ce qu’on appelle le paramètre de mots-clés. L'utilisation de *sequence ou **dict dans l'appel nous permet d'encapsuler n'importe quel nombre d'objets liés à la position ou aux mots-clés dans une séquence ou un dictionnaire, respectivement, et de les transmettre à la fonction , décompressez-les en paramètres distincts et uniques.

In [26]: def drop_first_last(grades):
   ....:     first,*middle,last = grades
   ....:     return avg(middle)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal