如何在 Python 中创建一个由多个对象组成的 3D 数组?

How can I create a 3D array made of more than one object in Python?

我知道如果我想在 Python 中创建一个 3D 数组,我可以这样做:

[[['#' for i in range(3)] for j in range(3)] for k in range(3)]

也就是说,如果我想在 3D 数组中包含另一个符号怎么办? 例如,如果我想在数组中交替使用“#”和“-”怎么办?或者如果我想要两个'#''s in a row, followed by a '-'怎么办。我怎么能这样写? 谢谢你的时间。

试试这个:

>>> [[['#' if i%2==0 else '-' for i in range(3)] for j in range(3)] for k in range(3)]
[[['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']], [['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']], [['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']]]

试试 itertools.cycle:

import itertools
it = itertools.cycle(['#', '-', '#'])
print([[[next(it) for i in range(3)] for j in range(3)] for k in range(3)])

输出:

[[['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']], [['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']], [['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']]]

检查i的值,如果是< 2则插入#;否则放 -:

[[['#' if i < 2 else '-' for i in range(3)] for j in range(3)] for k in range(3)]

要交替使用,只需使用模数:

[[['#' if i % 2 == 0 else '-' for i in range(3)] for j in range(3)] for k in range(3)]