python - 您如何专门将元素添加到二维数组?
问题描述
对于二维数组,我只希望特定元素是不同的数字。如果数组不是固定的并改变了尺寸,你怎么能用 for 循环遍历它来实现模式?
0 0 0 0 1
0 0 0 0 1
0 0 1 0 1
0 0 1 0 1
1 0 1 0 1
0 0 0 0 0 0 1
0 0 0 0 0 0 1
0 0 0 0 1 0 1
0 0 0 0 1 0 1
0 0 1 0 1 0 1
0 0 1 0 1 0 1
1 0 1 0 1 0 1
这就是我想要创建的,但我找不到只在 for 循环中选择那些的方法。任何帮助,将不胜感激。提前致谢!
rows, cols = (5,5)
arr = [[0 for i in range(cols)] for j in range(rows)]
for row in arr:
if row == 0 or row == 1:
print("h")
arr[rows-1, row] = 1
if row == 2 or row == 3:
arr[rows-1, row] = 1
if row == 4 or row == 5:
arr[rows-1, row] = 1
if row == 6 or row == 7:
arr[rows-1, row] = 1
print(arr)
这就是我到目前为止所拥有的。
解决方案
一个可能的解决方案:
from pprint import pprint
n = 5
mat = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
for j in range(n):
if i + j >= n - 1 and j % 2 == 0:
mat[i][j] = 1
pprint(mat)
一些小注意事项(实际上,在代码审查论坛中这样做会更好):
- 如果矩阵总是正方形 - 您只需要定义一个值(
n
此处)而不是两个rows
andcols
。假设这n
也很奇怪,您的模式定义明确。 arr
不是一个很好的名字,看到名字'array'通常是指一维数组。在我看来,“矩阵”会更适合[mat
当然,简称]。pprint
是一个模块,它允许以“更漂亮”的方式打印到屏幕上,相对于一些 python 数据结构,例如列表列表。它有时会派上用场。查看与 相比时的差异print
。
这里的关键是识别其中的模式,并在代码中清晰地实现它。有许多可能适合的模式 - 但在这里我选择了“仅查看偶数列”和“仅查看矩阵的右下三角形”。
n
例如,更改为 11 会产生:
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1],
[0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1],
[0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1],
[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1],
[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1],
[0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]]