Итерация по двум значениям списка за раз в 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
Ответы
Ответ 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)