Я представляю этот код на основе ответа Питера Хоффмана в качестве ответа на комментария dfa .
Гарантируется, что ваш кортеж имеет четное количество элементов или нет.
[(tup[i], tup[i+1]) for i in range(0, (len(tup)/2)*2, 2)]
Параметр диапазона (len(tup)/2)*2
вычисляет наибольшее четное число, меньшее или равное длине кортежа, поэтому гарантированно будет работать независимо от того, имеет ли кортеж четное число элементов.
Результатом метода будет список. Это можно преобразовать в кортежи с помощью функции tuple()
.
Пример:
def inPairs(tup):
return [(tup[i], tup[i+1]) for i in range(0, (len(tup)/2)*2, 2)]
# odd number of elements
print("Odd Set")
odd = range(5)
print(odd)
po = inPairs(odd)
print(po)
# even number of elements
print("Even Set")
even = range(4)
print(even)
pe = inPairs(even)
print(pe)
выход
Odd Set
[0, 1, 2, 3, 4]
[(0, 1), (2, 3)]
Even Set
[0, 1, 2, 3]
[(0, 1), (2, 3)]