我想创建一个二维列表,其行和列作为输入,其元素是行号和列号的乘积
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()
这里有两个选择,
- 列表理解。
- 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
这是我写的代码,但我想不出一种方法来将列表中的值更改为行号和列号的乘积
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()
这里有两个选择,
- 列表理解。
- 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