为什么它跳过数组输入的第一行

why does it skips the first line for input of an array

输入格式

第一行包含 N 的 space 个分隔值 和M。 接下来的行包含 space 分隔的列元素。

input
2 2
1 2
3 4

代码

import numpy


my_array = numpy.array([input().split() for _ in range(int(input().split()[0]))],int)

print(my_array.T,my_array.flatten(),sep = "\n")

在获取数组输入时,代码如何跳过包含行数和列数的第一行“2 2”, 我只想了解它是如何开始从第二行接受输入的

output
[[1 3]
 [2 4]]
[1 2 3 4]

此代码使用列表理解,其中后者的调用input()读取第一行,因此它从第二行获取输入。

此代码等同于:

import numpy as np

# Read the first line.
num_rows = int(input().split()[0])

# Deal with data.
rows = []
for __ in range(num_rows):
    rows.append(input().split())
my_array = np.array(rows, int)

print(my_array.T, my_array.flatten(), sep='\n')

首先,执行 for _ in range(int(input().split()[0])) 并从输入中读取第一行(在您的示例输入中,2 2)。然后对于从执行的 range(int(input().split()[0])) 获得的范围,将读取下一行。 在您的示例输入中,首先将执行 for _ in range(int(input().split()[0])),实际上是 for _ in range(2)),然后将使用 input().split() 读取 2 下一行。