首页 > 解决方案 > 您如何专门将元素添加到二维数组?

问题描述

对于二维数组,我只希望特定元素是不同的数字。如果数组不是固定的并改变了尺寸,你怎么能用 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)

这就是我到目前为止所拥有的。

标签: python

解决方案


一个可能的解决方案:

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)

一些小注意事项(实际上,在代码审查论坛中这样做会更好):

  1. 如果矩阵总是正方形 - 您只需要定义一个值(n此处)而不是两个rowsand cols。假设这n也很奇怪,您的模式定义明确。
  2. arr不是一个很好的名字,看到名字'array'通常是指一维数组。在我看来,“矩阵”会更适合[mat当然,简称]。
  3. 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]]

推荐阅读