Je dois écrire une fonction qui recherche une liste pour trouver une correspondance pour un élément donné. La fonction prend deux arguments: une liste et un élément cible. Il renvoie deux valeurs: une valeur booléenne indiquant si l'élément existe dans la liste et si l'élément existe, l'index de l'élément correspondant. P>
3 Réponses :
Comment écrire une fonction avec 2 arguments? P>
C'est aussi simple que: P>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] (True, 1) (True, 6) (False, None)
Vous n'avez pas besoin de boucle. Votre explication est un peu plus compliquée que nécessaire
@ Alec935, si vous souhaitez implémenter cette chose spécifique dans python, i> Vous pouvez vous éloigner des choses comme dans code> et list.index code>. Toutefois, étant donné le contenu de la question, il semble évident que cela soit de la classe ouvrière, donc devrait probablement être utilisé comme une opportunité d'apprendre à coder dans Général i> plutôt que du code dans Python. Cela dit, j'ai ajouté du code python idiomatique dans la note de pied sur la chance que mon hypothèse sur l'intention est incorrecte.
Il se peut que vous ayez raison. J'ai répondu à cette recherche sur des balises Python et la question est étiquetée Python, mais votre réponse est probablement plus utile pour les autres à la recherche de la question
ls, item = input("Enter comma-separated values: ").split(","), input('Enter an item: ')
def slist(ls,item):
try: ind,inls = ls.index(item), True
except: ind,inls = None, False
return inls,ind
inls,ind = slist(ls,item)
print('In list: %s' % inls,'\nIndex: %s' % ind)
Pourquoi rechercher la liste deux fois (avec dans code> et index code>)? Vous pouvez simplement utiliser l'index code> immédiatement et capturer l'erreur de valeur pour renvoyer false & Aucun.
@paxdiablo édité selon vos conseils
Utiliser simplement l'opérateur dans code> peut vérifier si l'élément requis existe dans la liste. Ensuite, utilisez list.index (item) code> pour obtenir l'index de l'élément. def function_name(l,item):
if item in l:
return True, l.index(item)
else:
return False, -1
Comme avec mon commentaire à Alec, vous pouvez contourner le dans code> et simplement attraper l'erreur de valeur à partir de index code>. Mieux vaut demander pardon que de demander la permission :-)
@paxdiablo c'est une bonne idée. Quand j'ai posté ma réponse, vous n'aviez pas encore commenté Alec935 cependant.
Vous devriez essayer une solution avant de poster. Quoi qu'il en soit, j'ai posté une fonction qui fait ce que vous demandez. S'il vous plaît dites-moi si c'est ce que vous voulez.
Bienvenue sur Stackoverflow. Cette question est manquante contexte ou d'autres détails: veuillez améliorer la question en fournissant un contexte supplémentaire, ce qui inclut idéalement vos pensées sur le problème et toutes les tentatives que vous avez apportées pour le résoudre. Cette information aide les autres à identifier l'endroit où vous avez des difficultés et les aide à écrire des réponses adaptées à votre niveau d'expérience. Vous devez également indiquer exactement quelle est votre difficulté, ce que vous attendiez, de ce que vous avez eu et de toute trace.