Voie la plus courte à la tranche pair/impair de lignes à partir d'un python tableau?
Ou, une question plus générale serait, comment découper un tableau pour chacune des n-ième ligne, donc pour les paires/impaires vous voulez sauter une ligne, mais dans le cas général, vous voulez obtenir chaque n-ième lignes, le saut à n-1 lignes.
- le module est votre ami.
- je me rends compte que je peux le faire dans une boucle avec elle, mais je me demandais si je pouvais le faire en une seule ligne au lieu
- Bonne question. Les réponses ici m'a aidé aussi. Super, merci.
Vous devez vous connecter pour publier un commentaire.
En supposant que vous parlez d'un liste, vous spécifiez l'étape dans la tranche (et de l'index de début). La syntaxe est
list[start:end:step]
.Vous le savez probablement, la liste normale de l'accès à un élément, par exemple
l[2]
pour obtenir le troisième élément. Donner deux numéros et une virgule entre les deux, vous pouvez spécifier un gamme que vous voulez obtenir à partir de la liste. La valeur de retour est une autre liste. E. g.l[2:5]
vous donne la troisième à la sixième élément. Vous pouvez également passer à un troisième numéro, qui spécifie la taille de pas. Par défaut, le pas est un, ce qui signifie simplement prendre chaque élément (entre le début et la fin de l'index).Exemple:
Voir les listes dans le tutoriel Python.
Si vous voulez obtenir tous les
n
-th élément d'une liste (c'est à dire à l'exclusion du premier élément), vous devez tranche commel[(n-1)::n]
.Exemple:
Maintenant, tout le troisième élément serait:
Si vous souhaitez inclure le premier élément, il suffit de le faire
l[::n]
.::
? Ou sont tous les deux d'un opérateur, qui est différente de:
? Si je nel[::1]
- je obtenir le tableau d'origine alors?l[2:5]
. L'étape est facultative.C'est plus pour moi qu'un exemple complet 😉
où
arr
est une liste, etn
tranches sont nécessaires.map()
etfilter()
avec unlambda
. Ceci est déconseillé/lente et doit toujours être fait à l'aide d'une compréhension de liste.