Python возвращает первый и последний обмененный элемент
Мне нужно создать функцию для нарезки последовательности для того, чтобы обменялись первым и последним элементом, а середина осталась посередине. Он должен уметь обрабатывать строку / список / кортежи. У меня проблемы с опечатками - не могу добавить список + int.
Это:
def exchange_first_last(seq):
"""This returns the first and last item of a sequence exchanged"""
first = seq[-1]
mid = seq[1:-1]
last = seq[0]
return print(first+mid+last)
производит
(5, [2, 3, 4], 1)
Но мне не нужен список внутри кортежа, только одна плавная последовательность.
(5,2,3,4,1,)
Любые намеки / предложения приветствуются. Идея состоит в том, чтобы правильно разделить, чтобы обрабатывать различные типы объектов.
4 ответа
Попробуй это:
def exchange_first_last(seq):
"""This returns the first and last item of a sequence exchanged"""
first = seq[-1:]
mid = seq[1:-1]
last = seq[:1]
return print(first+mid+last)
Немного измените код, обратите внимание на квадратные скобки:
def exchange_first_last(seq):
"""This returns the first and last item of a sequence exchanged"""
first = seq[-1]
mid = seq[1:-1]
last = seq[0]
return print([first]+mid+[last])
Обратите внимание, что это на самом деле дает вам список, т.е. [5,2,3,4,1]
не кортеж (5,2,3,4,1)
,
Вы можете использовать list.extend():
def exchange_first_last(seq):
"""This returns the first and last item of a sequence exchanged"""
first = seq[-1]
mid = seq[1:-1]
last = seq[0]
merged = []
merged.extend(first)
merged.extend(mid)
merged.extend(last)
return merged
Вы можете просто поменять местами элементы
def swap(l):
temp = l[0]
l[0] = l[-1]
l[-1] = temp
return l