Python возвращает первый и последний обмененный элемент - PullRequest
0 голосов
/ 20 декабря 2018

Мне нужно создать функцию для нарезки последовательности, чтобы обменялись первым и последним элементом, а середина осталась посередине.Он должен уметь обрабатывать строку / список / кортежи.У меня проблемы с опечатками - не могу добавить список + 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 ]

0 голосов
/ 20 декабря 2018

Вы можете просто поменять местами элементы

def swap(l):
     temp = l[0]
     l[0] = l[-1]
     l[-1] = temp
     return l
0 голосов
/ 20 декабря 2018

Вы можете использовать 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
0 голосов
/ 20 декабря 2018

Попробуйте это:

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)
0 голосов
/ 20 декабря 2018

Немного измените свой код, обратите внимание на квадратные скобки:

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).

...