如何在 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)]
我知道如果我想在 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)]