Python "для цикла" с 2 списками / переменными - PullRequest
1 голос
/ 10 ноября 2019

У меня есть следующий код:

def odraw(oposlist, osizelist):
    for opos in oposlist and osize in osizelist:
        pygame.draw.rect(screen, black, (opos[0], opos[1], osize[0], osize[1]))

Как перефразировать вторую строку? То, как оно написано сейчас, явно не соответствует синтаксису Python.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2019

Если вы ищете парную итерацию, используйте zip:

for opos, osize in zip(oposlist, osizelist):

Однако, если вы хотите получить декартово произведение (соедините каждый элемент в oposlist с каждымэлемент в osizelist), используйте itertools.product ...

from itertools import product
# ...
for opos, osize in product(oposlist, osizelist):

... или просто вложенные циклы:

for opos in oposlist:
    for osize in oposlist:
        # do stuff
2 голосов
/ 10 ноября 2019

Вы можете сделать:

for i in range(len(oposlist)):
    # Refer oposlist and osizelist like
    oposlist[i]
    osizelist[i]

Tbh, другой ответ лучше: -)

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