Создание одновременных циклов в Python - PullRequest
5 голосов
/ 21 сентября 2009

Я хочу создать цикл, который имеет такой смысл:

for i in xrange(0,10):
for k in xrange(0,10):
     z=k+i
     print z

where the output should be

0
2
4
6
8
10
12
14
16
18

Ответы [ 5 ]

16 голосов
/ 21 сентября 2009

Вы можете использовать zip, чтобы превратить несколько списков (или итераций) в парные * кортежи:

>>> for a,b in zip(xrange(10), xrange(10)):
...     print a+b
... 
0
2
4
6
8
10
12
14
16
18

Но zip не будет масштабироваться так же, как izip (упомянутый выше) на больших сетах. Преимущество zip в том, что оно является встроенным, и вам не нужно import itertools - и , что на самом деле является преимуществом, субъективно.

* Не просто попарно, а n . Длина кортежей будет равна количеству итераций, которые вы передаете в zip.

11 голосов
/ 21 сентября 2009

Модуль itertools содержит функцию izip, которая объединяет итераторы требуемым образом:

from itertools import izip

for (i, k) in izip(xrange(0,10), xrange(0,10)):
   print i+k
2 голосов
/ 21 сентября 2009

Как насчет этого?

i = range(0,10)
k = range(0,10)
for x in range(0,10):
     z=k[x]+i[x]
     print z

0 2 4 6 8 10 12 14 16 18

2 голосов
/ 21 сентября 2009

Вы можете сделать это в python - просто сделайте вкладки правильными и используйте аргумент xrange для шага.

for i in xrange(0, 20, 2); print i

0 голосов
/ 21 сентября 2009

Вам нужны два массива и один цикл, итерируйте по каждому массиву один раз, добавляя результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...