выполнять несколько циклов одновременно - PullRequest
2 голосов
/ 02 сентября 2011

Возможно ли выполнить несколько циклов одновременно в python.

Like (синтаксическая ошибка, конечно):

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

По одновременно , я не , что означает смысл потока или процесса.

Я имею в виду, они имеют один и тот же индекс или курсор во время итерации.

Что я могу думать о достижении этого:

  1. Используйте переменную int для использования в качестве общего курсора
  2. поместите их в список кортежей и итерируйте список кортежей. Но создание списка кропотливо

Мне просто интересно, есть ли какие-то встроенные функции или более простой синтаксис для достижения этого.

Ответы [ 2 ]

9 голосов
/ 02 сентября 2011
for a,b in zip(list_of_a, list_of_b):
  # Do some thing

Если вы используете Python 2.x, беспокоитесь о производительности и / или используете итераторы вместо списков, рассмотрите itertools.izip вместо zip.

В Python 3.x zip заменяет itertools.izip; используйте list(zip(..)), чтобы получить старое (2.x) поведение zip, возвращающее список.

2 голосов
/ 02 сентября 2011
import itertools
for a, b in itertools.izip(list_a, list_b):
    # ...
...