Как мне вернуть середину массива python?

1

Вот подсказка: на первой строке отобразится первый, последний и средний элементы списка, разделенные символом.

Я пытаюсь получить это выяснено в течение нескольких часов, но не знаю, правильный процесс, чтобы вернуть середину массива. Вот мой код:

primary = []
length = 0
i = ("MORE")
while i != "NOMORE":
    i = str(input("?"))
    print(i)
    if i == "NOMORE":
        break
    primary.append(i)
    length = length + 1
mid = (length/2)

print(primary[0]," , ", primary[-1]," , ",primary.pop([mid]))

Код работает, чтобы получить правильные входы из программы, но поскольку списки будут переменной длины, я предполагаю, что будет использоваться какая-то форма цикла. Первичная.pop([mid]) была моей плохой попыткой получить медианную печать. Я знаю, что середина не будет напечатана, так как это неправильный тип переменной, но как я могу это заменить?

Любая помощь приветствуется.

  • 0
    Хорошее место для начала - документация по Python о стандартных типах данных .
  • 0
    length/2 часто возвращает float. Вы должны всегда использовать // для целочисленного деления, если вы собираетесь использовать результат для индексации списка
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Вы необязательно вызываете метод pop() на primary с [mid] когда вам нужно просто индексировать primary с mid. Вы также должны использовать оператор // вместо / для получения целочисленного значения для индекса. Поскольку индекс основан на 0, средняя точка должна быть (length - 1)//2 вместо:

primary = []
length = 0
i = ("MORE")
while i != "NOMORE":
    i = str(input("?"))
    print(i)
    if i == "NOMORE":
        break
    primary.append(i)
    length = length + 1
mid = (length - 1) // 2

print(primary[0]," , ", primary[-1]," , ",primary[mid])
  • 0
    (длина - 1) // 2 вернет неправильное местоположение для приглашения, (длина -2) // 2 вместо этого исправит это. Спасибо вам за помощь
  • 0
    Пожалуйста. Я не думаю (length - 2) // 2 хотя это правильно. Попробуйте ввести 1 , 2 , 3 и NOMORE . Ожидаемый результат должен быть 1 , 3 , 2 , но при (length - 2) // 2 выход равен 1 , 3 , 1 .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню