Я представляю этот код на основе Peter Hoffmann's answer в ответ на dfa's comment.
Гарантировано, что ваш кортеж имеет четное количество элементов.
[(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)]
Вы не можете переменной с именем кортежа перезаписывает встроенной функции кортеж(). – recursive