Maison >développement back-end >Tutoriel Python >Comment décomposer des objets itérables en variables distinctes en Python (code)
Ce que cet article vous apporte concerne la méthode d'implémentation (code) de décomposition d'objets itérables en variables distinctes en Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. aide.
1. Exigences
Vous avez maintenant un tuple ou une séquence contenant N éléments, et vous souhaitez maintenant le décomposer en N variables distinctes.
2. Solution
En python, toute séquence, tuple ou objet sérialisable peut être décomposé en objets séparés via une simple variable d'opération d'affectation.
La seule exigence est que le nombre total et la structure des variables doivent correspondre à la séquence. Si cela ne correspond pas, une erreur sera signalée
Exemple d'affichage :
#将序列分解为单独的变量 m=(1,2) x,y=m print("x=",x) print("y=",y) print("*"*30) data=["mark",18,"超级帅",(1992,5,4)] name,age,feature,birthday=data print("name=",name) print("age=",age) print("feature=",feature) print("birthday=",birthday) print("*"*30) name,age,feature,(year,mon,day)=data print("name=",name) print("age=",age) print("feature=",feature) print("year=",year) print("mon=",mon) print("day=",day)
Résultat
x= 1 y= 2 ****************************** name= mark age= 18 feature= 超级帅 birthday= (1992, 5, 4) ****************************** name= mark age= 18 feature= 超级帅 year= 1992 mon= 5 day= 4
Réflexion
Réel Ce n'est pas seulement une liste de tuples. Tant que l'objet est itérable, vous pouvez effectuer des opérations de décomposition, y compris des chaînes, des fichiers, des itérateurs et des générateurs. Exemple d'affichage :#将序列分解为单独的变量 mark="mark" m,a,r,k=mark print(m) print(a) print(r) print(k) print("*"*30) #有时候我们想丢弃某个值,单由于变量数量必须和要分解的对象的可分解数量相同,此时我们可以使用_来表示要丢弃的值。 mark="mark" m,a,r,_=mark print(m) print(a) print(r) #其实_还是一个变量,指示看起来舒服点 print(_)Résultat :
m a r k ****************************** m a r k
4. Mise à niveau des exigences
Si l'objet du numéro de série est disponible Il peut être décomposé en N éléments. Devons-nous créer N éléments ? Et si la valeur de N est très grande ?5. Mise à niveau de la solution
L'"*expression" en Python peut répondre aux besoins ci-dessus. Par exemple, il existe d'innombrables listes de notes : notes. Maintenant, je veux supprimer la première note et la dernière note, puis trouver la moyenne des notes restantes : Codeimport numpy as np grades=list(range(10))#定义一个0-999的分数列表 print("grades:"+str(grades)) first,*middle,last=grades print("middle:"+str(middle)) print("去掉第一个和最后一个分数后的平均值:"+str(np.mean(middle)))Résultat
grades:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] middle:[1, 2, 3, 4, 5, 6, 7, 8] 去掉第一个和最后一个分数后的平均值:4.5Bien sûr, cette [*expression] peut être à la première position, à la dernière position, ou à d'autres positions. Supposons qu'il existe des enregistrements d'utilisateurs. Les enregistrements sont constitués de noms et d'adresses e-mail, suivis d'un nombre quelconque de numéros de téléphone :
record=('mark','1782980833@qq.com','18321859453','18956245389') name,email,*phone_numbers=record print(name) print(email) print(phone_numbers)Exécutez les résultats :
mark 1782980833@qq.com ['18321859453', '18956245389']
6. *Compétences d'expression
*Les expressions sont particulièrement utiles lors de l'itération sur une séquence de tuples de longueur variable
Code :
records=[ ('foo',1,2), ('bar','hello'), ('foo',3,4), ] def do_foo(x,y): print('foo',x,y) def do_bar(s): print('bar',s) for tag,*args in records: if tag=='foo': do_foo(*args) elif tag=='bar': do_bar(*args)Résultat :
foo 1 2 bar hello foo 3 4
Également utile lorsqu'il est combiné avec certaines opérations de traitement de chaînes (comme le fractionnement)
Code :line='nobody:*:-2:-2:unp user:/var/empty:/user/nim/false' uname,*fileds,homedir,sh=line.split(':') print(uname) print(homedir) print(sh)Résultat :
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!