Вывести элементы массива в обратном порядке

Первая строка содержит целое число N (размер нашего массива). Во второй строке через пробел записано N целых чисел, описывающих элементы массива(A).

Я пробовал следующее, однако я просмотрел страницу решения. Однако я не понимаю, как работает этот код. Может кто-нибудь, пожалуйста, объясните мне это. Я новичок в этом мире кодирования.

import math
import os
import random
import re
import sys

if __name__ == '__main__':
    n = int(input())
    arr = [int(arr_one) for arr_one in input().strip().split(' ')]
    for i in range(len(arr)):
        print(str(arr[-i-1]), end = " ")

ввод 1234 выход 4 3 2 1

ввод не разделен пробелом. Это правильный ввод?

Mithilesh_Kunal 01.02.2019 06:59
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
1
2 436
5

Ответы 5

Приведенный выше код можно переписать, как показано ниже, с большей читабельностью.

if __name__ == '__main__':
    n = int(input())
    inp = input("Enter the numbers seperated by spaces:::")
    inp = inp.strip() # To remove the leading and trailing spaces
    array = []
    for item in inp.split(' '):     # Splitting the input with space and iterating over each element
        array.append(int(item))     # converting the element into integer and appending it to the list

    print(array[::-1])  # here -1 says to display the items in the reverse order. Look into list comprehension for more details

Дополнительные сведения о нарезке списка см. в документации по Python.

ОП запрашивает объяснение существующего кода (который, вероятно, намеренно избегает нарезки), а не «лучший способ сделать это». Этот ответ как бы упускает суть.

ShadowRanger 01.02.2019 07:15

Попробуй это!

if __name__ == '__main__':
n = int(input()) # input as int from stream
arr = [int(arr_one) for arr_one in input().strip().split(' ')]
"""
1. asking for input from user
2. strip() function removes  leading and trailing characters.
3. split(' ') function split your input on space into list of characters
4. arr_one variable contains yours splited character and your iterating over it using for loop
5. int(arr_one) converts it into integer and  [] is nothing just storing everything into another list.
6. In last you are assigning new list to arr variable
"""
for i in reversed(arr): # loop over list in reverse order with built in fucntion
    print(i, end = " ") # printing whatever comes in i

Это должно работать так:

3 # your n 
1 2 3 # your input
3 2 1 # output

ОП запрашивает объяснение существующего кода, а не улучшенного кода.

ShadowRanger 01.02.2019 07:21

Вы создаете список целочисленных значений, удаляя пробелы и разделяя значения на ' '. После получения списка целых чисел вы выполняете итерацию по списку и преобразуете i-й элемент сзади (отрицательное значение индекса обозначает элемент с i-м индексом справа, и он основан на 1) arr обратно в строку и печатает число.

Пример:

 arr = [1,2,3,4]
 print(arr[1])  #prints 2 on the console, i.e 2nd element from the left.
 print(arr[-1]) #prints 4 on the console, i.e 1st element from the right.

Если это поможет, вы можете проголосовать за него, чтобы он был полезен и другим.

taurus05 01.02.2019 12:52

Возьмем этот фрагмент кода

n = int(input())
arr = [int(arr_one) for arr_one in input().strip().split(' ')]
for i in range(len(arr)):
    print(str(arr[-i-1]), end = " ")

Метод input() будет принимать пользовательский ввод с клавиатуры. int(input()) преобразует ввод в int, если ввод имеет строковый формат. например "4" вместо 4. Входное значение сохраняется в переменной n.

Ввод массива будет таким: «1 2 3 4». Итак, нам нужно разделить строку пробелом.

Метод strip() возвращает копию строки с удаленными начальными и конечными символами.

Метод split() возвращает список строк после разбиения данной строки на указанный разделитель. Здесь разделителем является пробел. Итак, split(' ')

input().strip().split(' ') примет на вход «1 2 3 4», а на выходе будет "1" "2" "3" "4"..

Теперь нам нужно взять каждый элемент после разделения. А затем скрыть в int и сохранить в массив.

arr = [int(arr_one) for arr_one in input().strip().split(' ')]

arr_one — это переменная, эта переменная хранит каждый элемент после разделения. Для каждого элемента мы преобразовали его в int, а затем сохранили в массив arr.

В python индекс массива начинается с 0. Если мы хотим получить доступ к последнему индексу в массиве, индекс будет начинаться с -1, -2, -3 и т. д.

for i in range(len(arr)): Цикл for будет выполнять итерацию от индекса 0 до длины массива. в этом примере размер равен 4. печать элементов массива из индекса -1. а аргумент end используется для завершения оператора print заданным символом, здесь конечный символ — " ". Таким образом, на выходе будет 4 3 2 1.

Большое спасибо за время и усилия в объяснении!

user10926213 01.02.2019 12:45

В Python3:

if __name__ == '__main__':
    n = int(input())
    arr = list(map(int, input().rstrip().split()))
    print(" ".join(str(x) for x in arr[::-1]))

Вход:

1 4 3 2

Вывод:

2 3 4 1

Другие вопросы по теме