Python ont une abréviation, pour cette simple tâche?
Je viens de commencer à apprendre le long-entendu langage python. J'ai travaillé avec C avant. Et je trouve python, comme un moderne, le langage de script est beaucoup plus concis sur les différentes tâches.
Alors je me demandais, si j'ai une liste foo = [1, 2, 3, 4, 5]
, et je veux chercher tous les nombres impairs hors de lui dans bar
. En C, je pourrais utiliser une boucle et vérifier chaque nombre dans foo
et copier les éléments nécessaires dans bar
. Que faites-vous les gars faire ceci "python" de style?
pour cet exemple, vous pouvez utiliser foo[::2].
foo[::2] est appelé "tranche" en Python, rechercher ce mot à mieux comprendre ChessMaster l'exemple. Il fonctionne bien dans ce cas particulier, parce que les nombres impairs par coïncidence occuper étrange positions dans la liste (même, pour zéro).
Courir à travers le tutoriel officiel (docs.python.org/tutorial). Il est assez court et aurait répondu à cette question.
foo[::2] est appelé "tranche" en Python, rechercher ce mot à mieux comprendre ChessMaster l'exemple. Il fonctionne bien dans ce cas particulier, parce que les nombres impairs par coïncidence occuper étrange positions dans la liste (même, pour zéro).
Courir à travers le tutoriel officiel (docs.python.org/tutorial). Il est assez court et aurait répondu à cette question.
OriginalL'auteur xzhu | 2012-02-12
Vous devez vous connecter pour publier un commentaire.
Cette forme est appelée "compréhension de liste". Dans sa forme de base, il dispose de 4 parties:
Ce que vous souhaitez inclure dans la liste de sortie. Peut être n'importe quelle expression impliquant la variable(s) défini dans la deuxième partie (ci-dessous). Dans ce cas, l'élément
x
, non modifiée;Une variable ou une expression, désignant un élément de la liste d'entrée. À la suite de la pour mot-clé, chaque élément de la liste sera lié à cette variable (si votre liste contient des objets complexes, vous pouvez utiliser déstructuration de cession de se référer uniquement à certaines de ses parties). Dans ce cas, chaque élément de la liste est lié à
x
;La liste d'entrée. À la suite de la dans mot, de la liste (ou d'un autre objet iterable) où vous pouvez obtenir vos éléments de. Dans ce cas,
foo
;Condition que l'élément doit satisfaire pour être inclus dans le résultat (en option). Si inclus, ajoutez le mot-clé si suivie par une expression pour déterminer si oui ou non cet élément est inclus dans la liste de sortie. Dans ce cas, il sera si le nombre est impair.
J'ai été la mise à jour de ma réponse (voulu donner une réponse rapide d'abord, puis élaborer...), il n'y a plus d'infos maintenant.
Le
== 1
est inutile.vrai. Personnellement, je n'aime pas compter sur 0 et non nulle pour le mensonge/truehood, préférant être explicite à ce sujet. Été mordu à plusieurs reprises dans le passé par des erreurs liées à cette... (certes, pas en Python, mais en JavaScript, qui a beaucoup plus moche de la sémantique; mais les cicatrices restent)
Pour référence, Google Python guide de style suggère d'utiliser l'implicite de valeur de vérité, mais PEP 8 ne semble pas de soins.
OriginalL'auteur mgibsonbr
filter
fonction de ce que vous recherchez:L'expression
lambda x: x % 2 == 1
est essentiellement équivalent àbar
être[1*2, 3*2, 5*2]
? Puis-je utiliser lambda expression de la carte?Non, vous devez utiliser
map
fonction pour ça 🙂 Vous pouvez combinerfilter
etmap
commemap(lambda x: x * 2, filter(lambda x: x % 2 == 1, foo))
ou de l'utilisation de la liste de compréhension comme suggéré par mgibsonbr.Merci!!!! S'il existe une liste de ce que les expressions lambda peut faire? Je pense que la compréhension de liste est courte et pratique, mais pas aussi universelle que lambda.
map
,reduce
etfilter
sont trois fonctions que vous pouvez utiliser pour la liste de manipulation. Voici un tutoriel qui explique tout: bogotobogo.com/python/python_fncs_map_filter_reduce.htmllambda
notation n'est pas spécifique à la liste des opérations de manipulation. C'est juste une façon de définir les fonctions anonymes à l'intérieur d'une expression.peut-être que question de l'aide. À mon humble avis, le principal avantage de
lambda
vous permet de définir très petites fonctions en place, de sorte que vous n'avez pas à déclarer ailleurs avant de les utiliser. Par exemple, pour trier votre liste dans l'ordre décroissant, vous pouvez utiliserfoo.sort(lambda a,b: b-a)
. Sans le lambda, vous deviez écrire une fonction de comparaison de la première et de le passer àsort
(peut-être jamais à l'aide de la fonction d'ailleurs).OriginalL'auteur Eser Aygün