0
votes

Comment transmettre un objet avec la valeur d'attribut dans la fonction Python

Je travaillais sur le tri, mais je ne peux pas appeler la fonction de manière spécifique.

Fondamentalement, ce que je veux faire, c'est créer une fonction prend une liste de nœuds d'objet avec Valeur d'attributs forte> et renvoie une liste avec les éléments de la liste d'origine stockée dans les sublistes. Les éléments de la même valeur doivent être dans le même subliste et trier dans l'ordre décroissant. P>

Pour poursuivre le code Je veux savoir ce qui devrait être le paramètre de ceci. P>

advanced_sort([Node(1), Node(2), Node(1),Node(2)])


8 commentaires

Avez-vous essayé: Advanced_sort (liste = [nœud (1), nœud (2), nœud (1), nœud (2)]) Cela instancie les nœuds comme liste dans la fonction. def Advanced_sort (Liste = Aucune): <- En tant que code Advanced_sort (Liste = [Noeud (1), noeud (2), noeud (2), nœud (2)]) <- comme un appel


Je ne veux pas d'appel spécifique comme la prochaine fois que la fonction peut être appelée quelque chose comme Advanced_sort ([nœud (3), noeud (2), nœud (1), noeud (2)]) alors il y aura un problème


En outre, le nœud n'est pas défini.


Votre signature de fonction doit simplement être def Advanced_sort (nœuds):


@quamranais j'ai essayé mais semble que ce n'est pas la voie.


@Ujjwalsinghbaghel Il dépend entièrement de ce que vous faire avec NODES dans le corps de Advanced_sort . La signature ne se soucie simplement pas de la structure de chaque argument individuel.


Si l'appel est Advanced_sort ([nœud (1), nœud (2), noeud (1), noeud (2)]) , puis avancé_sort prend un seul argument, qui est destiné à être une liste (ou éventuellement une valeur ibler arbitraire). Qu'est-ce que dans cette liste n'est pas reflété par la signature (ignorer les indications de type).


@cheppner, ouais tu as raison mais j'ai toujours le même problème qui est comment dois-je utiliser de l'objet de nœud dans le paramètre de fonction?


3 Réponses :


0
votes

Êtes-vous en mesure de modifier la classe noeud ? Dans ce cas, vous pouvez faire quelque chose comme ceci: xxx

sortie: xxx


1 commentaires

L'appel de la fonction est spécifique ne peut pas changer le mode d'appel.



1
votes

Advanced_sort CODE> prend un seul argument: une liste (ou éventuellement une iérienne arbitraire). En tant que tel, la signature n'a qu'un argument: xxx pré>

ignorant les indications de type, la signature ne peut pas refléter la structure interne de l'argument unique; C'est juste em> un nom pour faire référence à la valeur transmise à l'intérieur du corps de la fonction. p>

à l'intérieur du corps, vous pouvez écrire du code qui suppose em> que nœuds code> est une liste et que chaque élément de la liste est un noeud code>, de sorte que vous puissiez faire des choses comme assumer chaque valeur en tant que valeur > attribut. p> xxx pré>

supposer une définition de noeud code> comme p> xxx pré>

la définition ci-dessus de Advanced_sort Code> produira la sortie suivante: P>

>>> advanced_sort([Node(3), Node(2), Node(1),Node(2)])
Found value 1
Found value 2
Found value 3
Found value 4


8 commentaires

Je suis obligé d'appeler la fonction de manière spécifique que j'ai mentionné avancée_sort ([nœud (1), noeud (2), nœud (1), nœud (2)]) ou avancée_sort ([nœud (3), noeud (2) , Noeud (1), noeud (2)])


La fonction doit prendre l'objet de nœud et ses attributs de l'appel


C'est exactement comment vous faire appelle la fonction. Les nœuds se réfèrent à la valeur de la liste unique que vous fournissez. [noeud (1), nœud (2), nœud (1), nœud (2)] est une valeur unique.


Homme, j'ai besoin d'appeler exactement la fonction de cette façon avancée_sort ([nœud (3), nœud (2), nœud (1), nœud (2)]) . N'ignorez pas le nœud terme dans un appel.


Je suis pas Ignorant le noeud termes. Avez-vous réellement lu ma réponse? La variable x dans la boucle de commande se référera à chaque personne nœud dans la liste.


Oui, j'ai lu et compris. Mais avez-vous essayé d'appeler votre fonction mon chemin? Comme comment je suis obligé de l'appeler? Quand je le fais de votre façon avec mon appel de fonction, le nœud Nom n'est pas défini


Tout ce que j'avais déjà été mentionné sur les questions, de toute façon que vous êtes vraiment une vie pour moi aujourd'hui +1


Votre question n'avait rien à voir avec avancé_sort , dont la définition (ou au moins la signature) ne s'appuie pas vraiment sur une définition particulière de noeud . C'était fondamentalement: «Comment définir une classe dont les instances ont une valeur ?".



1
votes

L'argument est un seul objet itérable tel qu'une liste, un tuple, un ensemble, ...

Ensuite, vous iTerez sur les éléments comme dans la réponse de Cheppner.

Pour un exemple, vous pouvez utiliser Dictionnaire pour regrouper les nœuds par valeur: xxx xxx


1 commentaires

Je sais qu'il y a beaucoup de type pour travailler, mais le problème de mon cas est que je suis obligé d'appeler la fonction de cette façon seulement- Advanced_sort ([nœud (3), noeud (2), noeud (1). , Noeud (2)])