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
Другие вопросы по тегам