Подтвердить что ты не робот

Итерация по двум значениям списка за раз в python

У меня есть набор (669256.02, 6117662.09, 669258.61, 6117664.39, 669258.05, 6117665.08), который мне нужно перебрать, например

    for x,y in (669256.02, 6117662.09, 669258.61, 6117664.39, 669258.05, 6117665.08)
        print (x,y)

который печатает

    669256.02 6117662.09
    669258.61 6117664.39
    669258.05 6117665.08

im на Python 3.3 btw

4b9b3361

Ответ 1

Вы можете использовать итератор:

>>> lis = (669256.02, 6117662.09, 669258.61, 6117664.39, 669258.05, 6117665.08)
>>> it = iter(lis)
>>> for x in it:
...     print (x, next(it))
...     
669256.02 6117662.09
669258.61 6117664.39
669258.05 6117665.08

Ответ 2

>>> nums = (669256.02, 6117662.09, 669258.61, 6117664.39, 669258.05, 6117665.08)
>>> for x, y in zip(*[iter(nums)]*2):
        print(x, y)


669256.02 6117662.09
669258.61 6117664.39
669258.05 6117665.08

Ответ 3

Пример grouper в разделе рецептов itertools должен помочь вам здесь: http://docs.python.org/3.3/library/itertools.html#itertools-recipes

from itertools import zip_longest
def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

Затем вы использовали бы:

for x, y in grouper(my_set, 2, 0.0): ## Use 0.0 to pad with a float
    print(x, y)