J'essaie d'écrire une fonction qui prend 2 variables de liste, c'est-à-dire J'utilise une boucle imbriquée dans ma fonction pour ITERE à la fois par des listes et appendez les valeurs pour renvoyer une nouvelle liste de variable «combinée». P> La fonction prend les deux paramètres de la liste, mais iTère via uniquement la première valeur d'index [0] de chaque liste et sorties qui - La boucle se termine. p> Sortie attendue: Sortie réelle: Je m'attends à une nouvelle liste combinée de la première et de nom de famille à chaque index. p> Mais il renvoie les deux premières valeurs de chaque liste, puis la boucle se termine . p> p> first_names code> et
last_names code>.
Davesmith, Jamesjones, Stevejackson Code> P>
Davesmith Code> p>
4 Réponses :
Vous pouvez essayer avec ce code.
first_names = ["Dave", "James", "Steve"] last_names = ["Smith", "Jones", "Jackson"] def NameCombine(first_names, last_names): combined = [] for i in range(0, len(first_names)): if last_names[i] != None: combined.append(first_names[i] + " " + last_names[i]) else: combined.append(first_names[i]) return combined print(NameCombine(first_names,last_names))
Merci @pasan Chamikara. Bien que cela réalise ma sortie cible, j'essaie toujours de comprendre comment réaliser la même sortie à l'aide d'une boucle imbriquée.
@ Djoseph1 - Une boucle cycliste trois fois imbriquée dans une boucle également à vélo trois fois donne un total de neuf cycles, i. e. Neuf valeurs résultantes, alors que vous voulez seulement trois valeurs résultantes. Par conséquent, une boucle imbriquée ne peut pas atteindre ce que vous voulez.
Vous pouvez les combiner avec zip code> dans la compréhension:
Cela atteint la production cible et les accessoires à @Pasan Chamikara pour sa réponse qui inclut le formatage également. J'essaie toujours de comprendre si mon code d'origine peut atteindre la même sortie à l'aide d'une boucle imbriquée.
Vous avez le droit logique, mais l'indentation était manquante. Bien que la réponse de @Pasan fonctionnera, mais que cette solution est plus élégante et plus pythonique d'obtenir le même résultat dans une seule ligne de code
La pythonique et la compréhension de la liste est ma manière préférée. Mais si vous vouliez vraiment une solution à l'aide d'une boucle imbriquée, cela fonctionnerait pour vous. Il suffit d'utiliser votre code et d'ajouter une condition supplémentaire pour imprimer uniquement le résultat souhaité.
Les résultats de cette solution sont les suivants: ['Davesmith', 'Jamesjones', 'Stevejackson'] P>
first_names = ["Dave", "James", "Steve"] last_names = ["Smith", "Jones", "Jackson"] def NameCombine(first_names,last_names): combined = [] for first in first_names: for last in last_names: if first_names.index(first) == last_names.index(last): combined.append(first+last) return combined print(NameCombine(first_names,last_names))
Depuis la plupart d'entre eux, répondez spécifiquement à votre question. Je voudrais ajouter l'autre moyen d'atteindre la solution à ce problème comme ci-dessous,
Ici, j'ai utilisé mappe code> et
Ajouter code> à partir du module de l'opérateur p>
list(map(operator.add, first_names, last_names))
# ['DaveSmith', 'JamesJones', 'SteveJackson']
Pensez à l'endroit où vous retournez de la fonction. Combien d'éléments avez-vous itéré à ce moment-là?
Dupliqué possible de Comment concaténer les deux listes d'éléments-sage à Python?
Toutes mes excuses - laissaient la condition de la même chose dans le moment où j'avais expérimenté et oublié de supprimer avant de copier. Édité et corrigé maintenant.