0
votes

Comment couper une liste circulaire itérative? (Python 2.7)

Je coupe une liste d'objets dans une boucle, mais je ne peux pas sembler faire en sorte que la tranchée se déplace autour des extrémités de cette liste, même avec l'indexation de modulo: xxx pre>

impressions: P> >

[0, 1]
[1, 2]
[2, 3]
[3, 0]


1 commentaires

La seule notation de tranches qui retournerait [3, 0] à partir de cette liste nécessite l'argument de l'étape: nums [3 :: - 3] ...


3 Réponses :


1
votes

Pour créer une "vraie" paire circulaire de chiffres, vous devez incorporer une partie itertools : xxx

Il s'agit d'un itérateur sans fin qui permettra de générer les types de paires de chiffres souhaitées.

cycle (Nums) répétera sans cesse votre liste de chiffres, islice (..., 1, aucun) saute le premier élément de celui-ci, donc vous avez essentiellement [0, 1 , 2, ...] et [1, 2, 3, ...] , quel izip combine.

vous Peut maintenant prendre une petite tranche de celui-ci: xxx


1 commentaires

Merci. Jusqu'à présent, il s'agit de la seule réponse en résolvant correctement la pièce de tranchage.



0
votes

ou vous pouvez faire:

[0, 1]
[1, 2]
[2, 3]
[3, 0]


0 commentaires

0
votes

ou essayez d'utiliser:

N = 4
nums = xrange(N)

for i in xrange(N):
    print (nums[i:(i+2)%(i+N)] + [0] * 2)[:2]


0 commentaires