0
votes

Pour renvoyer des éléments d'une liste d'une fonction

Je veux définir une fonction qui prend une liste comme son argument puis renvoie les éléments dans l'ordre.

Par exemple: P>

Enter list elements:12 23 34
12


5 commentaires

Vous pouvez utiliser la fonction intégrée iter .


Utilisez Imprimer au lieu de retour et que vous obtenez toutes les valeurs dans des lignes successives


BTW: Vous pouvez le faire sans plage (len ()) à l'aide de pour l'élément dans LIS: Imprimer (Item)


BTW: parce que vous avez une liste avec des chaînes, vous pouvez faire imprimer ("\ n" .join (L))


Bonjour @anshika Singh Je me demandais si vous aviez le temps de vérifier ma réponse. Si vous le trouvez utile, veuillez Uppouver et / ou le marquer comme une réponse finale, merci!


8 Réponses :


1
votes

Vous voulez probablement produire , comme retour provoque la fin de la fonction de fin. Mais rendement fabrique simplement un autre itérateur; Vous devez toujours faire itérair sur le résultat pour les imprimer tous, plutôt que d'imprimer simplement l'itérateur lui-même. XXX

Bien sûr, vous êtes à peu près reimplanifier l'itérateur de la liste existante. une définition équivalente serait xxx

ce que vous voulez peut-être faire plutôt quelque chose comme xxx

ce qui crée une chaîne par itération sur l et rejoindre les éléments à l'aide de \ n . La chaîne multiligne résultante peut alors être imprimée.


0 commentaires

7
votes

Vous pouvez utiliser un rendement afin de construire un générateur, Voici la documentation officielle sur les générateurs

Qu'est-ce qu'un générateur en Python? P>

Un générateur Python est une fonction qui retourne un itérateur de générateur (juste un objet que nous pouvons itérayer) en appelant le rendement. le rendement peut être appelé avec une valeur, auquel cas cette valeur est traitée comme la valeur "générée". p> blockQuote>

Je veux aussi partager un exemple, assurez-vous de lire les commentaires: P>

def iterator(lis):
    for e in range(len(lis)):
        yield lis[e]

l=input("Enter list elements:").split()

# A generator returns an Iterable so you should
# loop to print
for number in iterator(l):
    print(number)

# Or use list
result = list(iterator(l))
print(result)


8 commentaires

Mais de cette façon, la liste est imprimée et je souhaite les éléments de lignes successives, renvoyés de la fonction. @Pitto


Désolé mais ce n'est pas 100x100 Clear Que voulez-vous obtenir ... Si vous voulez simplement imprimer les éléments dans des lignes successives, pourquoi n'utilisez-vous pas juste une boucle?


Comment entrez-vous votre numéro dans la zone de saisie?


Je ne comprends pas votre question?


Je veux dire que écrivez-vous lorsque vous demandez à la saisie de l'utilisateur? "12 32 23" et entrez-vous?


Oui, voici comment je saisis les éléments de la liste. @ Pitto


Mon code fonctionne exactement comme si vous avez besoin ... Testez ici: py3.codeskulptor.org/#user305_nals4ywps4_0. py


Bonjour @anshika Singh, s'il vous plaît envisagez de prélever ma réponse et / ou de la sélectionner comme une réponse finale si cela vous a été utile. Merci!



0
votes

Utilisation:

[print(i) for i in input("Enter list elements:").split(" ")]


2 commentaires

Cela utilise une compréhension de liste pour un effet secondaire. C'est un anti-motif car il construit également une liste de aucun


@ROGANJOSH correct, mais si je ne le stocke pas n'importe où, il n'y a pas de perte de mémoire dans cette situation et de faire mon travail facilement.



1
votes

Il n'imprimera qu'un seul élément si vous faites retour xxx


0 commentaires

0
votes

retour provoque l'arrêt de la fonction une fois qu'il frappe la déclaration. Donc, votre boucle ne fonctionne que jamais une fois.

Vous pouvez utiliser le rendement comme mentionné dans les autres réponses, mais je ne pense vraiment pas avoir besoin d'une fonction dans cette situation. Parce que la fonction va simplement renvoyer la liste qu'il a fallu comme un argument. Ce que vous devriez faire est quelque chose comme ceci: xxx

C'est aussi simple.


2 commentaires

Je suis au courant de cette méthode, mais la question que j'essaie de résoudre spécifiquement des exigences spécifiquement les valeurs sont renvoyées à partir d'une fonction définie par l'utilisateur.


Il serait plus facile de répondre à votre question si vous avez donné un peu plus de contexte. Bien que ce que vous avez demandé dans votre question soit pour une fonction qui a renvoyé la valeur, vous n'avez pas spécifié pourquoi et dans l'exemple que vous avez fourni, il a beaucoup plus logique d'utiliser une boucle. J'ai toujours l'impression que le rendement n'est toujours pas la meilleure option, mais il n'ya aucun moyen de savoir que si vous modifiez votre question pour être plus spécifique.



0
votes
def iterator(lis):
    for e in range(len(lis)):
        print( lis[e])

l=input("Enter list elements:").split()
iterator(l)
if you want to do some operations for each item in the list, then you should accomodate those within the function.

0 commentaires

1
votes

Utilisation: DEF Itérateur (liste): pour e dans la plage (len (liste)): a = liste [e] Imprimer (a) l = a, b, c = entrée (). Split () A = Itérateur (L)


0 commentaires

-1
votes

Utilisation d'impression au lieu de retour vous donnera la sortie attendue ..


0 commentaires