2011-09-02 6 views
2

Est-il possible d'effectuer plusieurs boucles simultanément en python.effectuer simultanément plusieurs boucles pour les boucles

Comme (erreur de syntaxe, bien sûr):

for a,b in list_of_a,list_of_b: 
     //do some thing 

Par simultanément, je suis pas signifie le sens de fil ou d'un processus. Je veux dire, ils partagent le même index ou le même curseur pendant l'itération.

Ce que je peux penser à y parvenir est:

  1. Utilisez une variable int pour agir comme un curseur partagé
  2. les mettre dans une liste de tuples et itérer la liste des tuple. Mais la création de la liste est laborieuse

Je me demande simplement s'il existe des fonctions intégrées ou une syntaxe plus simple pour y parvenir.

+1

Si vous voulez des boucles imbriquées au lieu de boucles simultanées, utilisez 'itertools.product'. Si la liste est juste les index de l'autre, utilisez 'enumerate'. – agf

+0

Outil utile, merci. C'est un bonus que j'ai. :-) – xiaohan2012

Répondre

9
for a,b in zip(list_of_a, list_of_b): 
    # Do some thing 

Si vous utilisez Python 2.x, sont préoccupés par la performance et/ou l'utilisation d'itérateurs au lieu des listes, tenez compte itertools.izip au lieu de zip. En Python 3.x, zip remplace itertools.izip; utilisez list(zip(..)) pour obtenir l'ancien comportement (2.x) de zip renvoyant une liste.

+0

Explication: 'zip' crée une liste de tuples parmi ses arguments. – katrielalex

2
import itertools 
for a, b in itertools.izip(list_a, list_b): 
    # ...