【问题标题】:How to get the same output using multidimensional arrays?如何使用多维数组获得相同的输出?
【发布时间】:2020-02-05 22:24:55
【问题描述】:

我正在写作业。我的程序应该向用户询问行数和列数,然后将二维数组的每个索引相乘,然后输出结果。

我的程序完成了它应该做的事情——输出是正确的。但是,我真的不知道如何使用二维数组来解决这个问题。可能是因为我以前没有见过他们,我们才刚刚开始在课堂上使用它们。

while True:
    try:
        num_row = int(input("Number of rows: "))
        break
    except ValueError:
        print('Please enter an integer!')

while True:
    try:
        num_column = int(input('Number of columns: '))
        break
    except ValueError:
        print('Please enter an integer!')

for rows in range(num_row):
    for columns in range(num_column):
        print(rows * columns, end=' ')
    print()

【问题讨论】:

  • 欢迎来到 Stack Overflow。 Python 有三种不同的常见“数组”类型——你想用哪一种?有一个列表列表,它内置在 Python 语言中。还有一个数组类型的标准array 模块,但很少使用。最后是numpy 第三方模块,它的ndarray 类型,通常缩写为“数组”。这在大规模计算工作中非常流行。如果您告诉我们您想要什么(或者如果您不知道),我们可以为您提供更好的帮助。您的输出看起来最接近ndarray

标签: python arrays list arraylist multidimensional-array


【解决方案1】:

二维数组本质上是数组中的数组,例如:

[['a', 'b', 'c'],
 ['d', 'e', 'f'],
 ['g', 'h', 'i']]

我认为您的解决方案是最有效的,但如果您想使用 2D 数组(通常是 Python 中的 2D 列表),那么您将创建一个输入维度的 2D 数组,然后遍历每一行和该行中的项目,并乘以每对索引。

也许像这些嵌套的 for 循环:

for i,row in enumerate(array):
    for j,item in enumerate(row):
        print(i*j,end=' ')
print()

【讨论】:

    【解决方案2】:

    首先你需要初始化你的二维数组。这是您修改后的代码:

    while True:
        try:
            num_row = int(input("Number of rows: "))
            break
        except ValueError:
            print('Please enter an integer!')
    while True:
        try:
            num_column = int(input('Number of columns: '))
            break
        except ValueError:
            print('Please enter an integer!')
    
    
    # initialize the 2d array (tab) using a list-comprehension 
    # e.g.: for 3 cols and 2 rows, You will have
    # tab = [[0, 0, 0], [0, 0, 0]]
    tab = [[0 for c in range(num_column)] for r in range(num_row)]
    
    # to create each value of the 2d array
    for rows in range(num_row):
        for columns in range(num_column):
            tab[rows][columns] = rows * columns
    
    
    # to print the value of a created 2d array
    for rows in range(num_row):
        for columns in range(num_column):
            print(tab[rows][columns], end= " ")
        print()
    

    这是另一个精简版:

    while True:
        try:
            num_row = int(input("Number of rows: "))
            break
        except ValueError:
            print('Please enter an integer!')
    
    while True:
        try:
            num_column = int(input('Number of columns: '))
            break
        except ValueError:
            print('Please enter an integer!')
    
    
    # initialize the 2d array (tab) using a list-comprehension 
    # e.g.: for 3 cols and 2 rows, You will have
    # tab = [[0, 0, 0], [0, 0, 0]]
    tab = [[0 for c in range(num_column)] for r in range(num_row)]
    
    # to create each value of the 2d array and print it at the same time
    for rows in range(num_row):
        for columns in range(num_column):
            tab[rows][columns] = rows * columns
            print(tab[rows][columns], end= " ")
        print()
    

    【讨论】:

    • 非常感谢!我想,我现在明白了,所以你可能教会了我如何使用这些 2D 列表。
    • 不客气。如果您想使用多个数组,可以查看numpy 模块。这个模块很适合!
    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 2014-01-11
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多