【问题标题】:len() of a 2D array (PYTHON) is not coming correctly2D 数组 (PYTHON) 的 len() 未正确出现
【发布时间】:2023-04-03 00:16:02
【问题描述】:

参考下面的简单代码sn-p。获取二维数组的输入并打印它的大小

def prefix_sum_Rish():
    rows = int(input("type number of rows"))
    columns = int(input("type number of columns"))
    matrix = [[]]
    #getting input from console
    for i in range(rows):
        temp = []
        for j in range(columns):
            x = int(input("number please"))
            temp.append(x)
        matrix.append(temp)

    print("size of matrix" + str(len(matrix)))
prefix_sum_Rish()

输入给定,输出是

    type number of rows3
    type number of columns3
    number please1
    number please2
    number please3
    number please4
    number please5
    number please6
    number please7
    number please8
    number please9
    size of matrix4

Process finished with exit code 0

len(matrix) 返回 4 而它应该是 3。
如果我将行数设为 2,则 len(matrix) 返回 3。始终 len(matrix) 给出行数 + 1。
知道为什么会这样吗?

【问题讨论】:

  • 用你自己的话来说,你认为matrix的长度应该是你开始追加行之前?根据 Python,实际长度是多少?你明白为什么 Python 会给出并回答它吗?此外,这些是 not 数组(我们称它们为 lists)并且它们是 not “2d”,只是因为您嵌套了它们。如果您想要实际的 rectangular 存储(人们通常所说的二维数组,其中所有行都被强制为相同的长度,并且实现不必单独跟踪每一行),那么您需要第三方库。
  • 井 1 + 3 = 4。
  • 详细说明凯利的评论:您的matrix = [[]] 已经包含一个开头的元素:一个空列表[]。然后在循环中添加三个列表。 1 + 3 = 4。

标签:
python
arrays
python-3.x