Может кто-нибудь объяснить мне, что делает эта команда Python 3? - PullRequest
0 голосов
/ 02 сентября 2018

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

if __name__ == '__main__':                          #1   
    n = int(input())                                #2
                                                    #3
    arr = list(map(int, input().rstrip().split()))  #4
    for i in range(n):                              #5
        print(arr[-i-1],end=' ')                    #6

Я не получаю строку 4. Кто-нибудь может объяснить шаг за шагом, что делает эта строка? Как они работают и дают выход в целом? Входы были разделены пробелом:

5            #length of the array
1 2 3 4 5     #inputs separated by space

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

input() похоже, что получает следующую строку ввода. В этом примере это строка "1 2 3 4 5\n" (в конце есть символ новой строки).

rstrip() затем удаляет пробелы в правом конце ввода, включая символ новой строки.

split() без аргументов разделяется на пробел, преобразуя входные данные в итерируемые строки. например ['1', '2', '3', '4', '5']

map(int, sequence) применяет int к каждой строке. например int('1') -> 1, int('2') -> 2 и т. Д. Итак, ваша последовательность строк теперь является последовательностью целых чисел.

Наконец, list(seq) преобразует последовательность в тип списка. Так что теперь у вас есть [1,2,3,4,5].

0 голосов
/ 02 сентября 2018

В этой строке

arr = list(map(int, input().rstrip().split()))

input(): по умолчанию в качестве входных данных используется строка.

Функция map(aFunction, aSequence) применяет переданную функцию к каждому элементу итерируемого объекта и возвращает список, содержащий все результаты вызова функции. Итак, все строковые записи, разделенные пробелом, конвертируются в целое число.

Ссылка: https://www.bogotobogo.com/python/python_fncs_map_filter_reduce.php

split(): эта функция используется для разделения всех записей в строке на пробел.

rstrip(): эта функция используется для удаления пробелов, если они присутствуют в конце массива (1 2 3 4 5)

0 голосов
/ 02 сентября 2018

Это "питонный" способ создания list из int с из числового ввода с разделением пробелами:

arr = list(map(int, input().rstrip().split())) 

Требуется сделать список из результата map (...) , который возвращает генератор.

map берет функцию и применяет ее ко всем элементам второго итерируемого аргумента.

вход () .
rstrip () .
сплит () * * один тысяча двадцать-одна принимает входные данные, удаляет все пробелы с правой стороны и разбивает его на части по пробелам, которые затем передаются как итеративные в map(int, ...), что создает результат генерации из применения int ко всем элементам данной итерируемой. Результат карты подается в list(...), который составляет список из него.

"1 2 3 4" => ["1","2","3","4"] -> generator (1,2,3,4) -> [1,2,3,4]
...