Как перебирать два элемента списка одновременно?

Мне интересно, есть ли лучший способ перебирать два элемента за раз в списке. Я много работаю с Maya, и одна из ее команд (listConnections )возвращает список чередующихся значений. Список будет иметь вид [connectionDestination, connectionSource, connectionDestination, connectionSource]. Чтобы сделать что-нибудь с этим списком, в идеале я хотел бы сделать что-то похожее на:

for destination, source in cmds.listConnections():
    print source, destination

Конечно, вы можете просто перебрать каждый другой элемент в списке, используя [::2] и перечислить, а источником будет index+1, но тогда вам придется добавить дополнительные проверки для списков с нечетными номерами и прочее.

Самое близкое, что я придумал, это:

from itertools import izip
connections = cmds.listConnections()
for destination, source in izip(connections[::2], connections[1::2]):
    print source, destination

Это не очень важно, так как у меня уже есть способы делать то, что я хочу. Это просто похоже на одну из тех вещей, что должен быть лучший способ сделать это.

7
задан Mathieson 5 July 2012 в 18:27
поделиться