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)
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)
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')
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
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)
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!