谁能解释这个Python 3命令的作用?

Qua*_*ark 2 python split python-3.x

我是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
Run Code Online (Sandbox Code Playgroud)

我没听懂第4行。有人可以逐步解释该行在做什么吗?他们如何工作并提供整体输出?输入之间用空格隔开:

5            #length of the array
1 2 3 4 5     #inputs separated by space
Run Code Online (Sandbox Code Playgroud)

Hit*_*bat 5

input()看起来它获得下一行输入。在示例中,这是字符串"1 2 3 4 5\n"(末尾有换行符)。

rstrip() 然后在输入的右端删除空格,包括换行符。

split()不带参数的空白处会分割,将输入转换为可迭代的字符串。例如['1', '2', '3', '4', '5']

map(int, sequence)将int应用于每个字符串。例如int('1') -> 1int('2') -> 2等等。因此您的字符串序列现在是整数序列。

最后list(seq)将序列转换为列表类型。所以现在你有了[1,2,3,4,5]

  • rstrip() “剥离”字符串的右端,删除空格。这包括空格、制表符和换行符。所以你的 input() 是 `"12345\n"` 然后 rstrip() 只给出 `"12345"`。 (2认同)
  • @tarit 你看错了。您的输入不包含在字符串中 - 它是一个字符串(即使它是一串数字)!发生的情况是字符串根本没有转换为任何内容。 (2认同)