我想创建一个二维列表,其行和列作为输入,其元素是行号和列号的乘积

I want to create a 2d list with its rows and columns taken as input and its elements being the product of row and column numbers

这是我写的代码,但我想不出一种方法来将列表中的值更改为行号和列号的乘积

r = int(input("Input number of rows: "))
c = int(input("Input number of columns: "))
multi_list = [[1 for col in range(1, c+1)] for row in range(1, r+1)]

for row in range(1, r):
    for col in range(1,r):
        multi_list[row][col] = r*c

for inner_list in multi_list:
    for val in inner_list:
        print(val, end=' ')
    print()

这里有两个选择,

  1. 列表理解。
  2. for 循环。

列表理解解决方案:

row = int(input("Input number of rows: "))
col = int(input("Input number of columns: "))
#        [[        COL                   ]       ROW                 ]
matrix = [[r*c for c in range(1, col + 1)] for r in range(1, row + 1)]

让我们假设 2 行和 5 列
1。列表理解:

from pprint import pprint
row, col = 2, 5
matrix = [[r*c for c in range(1, col + 1)] for r in range(1, row + 1)]
pprint(matrix, indent=4, width=25)
[   [1, 2, 3, 4, 5],
    [2, 4, 6, 8, 10]]

2。另一个选项是循环:

from pprint import pprint
row, col = 2, 5

matrix = []
for r in range(1, row + 1):
    m.append([])  # add new row
    for c in range(1, col + 1):
        m[c-1].append(r*c)
        # m[-1].append(r*c)  # this will work too.

pprint(matrix, indent=4, width=25)
[   [1, 2, 3, 4, 5],
    [2, 4, 6, 8, 10]]

您的第一个循环必须更正为:

for row in range(1, r+1):
    for col in range(1,c+1):
        multi_list[row-1][col-1] = row*col