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

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

提问人:J. B. 提问时间:12/20/2020 更新时间:12/20/2020 访问量:136

问:

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

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

也就是说,如果我想在 3D 数组中包含另一个符号怎么办? 例如,如果我想在数组中的“#”和“-”之间交替使用,该怎么办?或者,如果我想要连续两个“#”,然后跟一个“-”,该怎么办?我怎么能写呢? 感谢您抽出宝贵时间接受采访。

多维数组 嵌套列表

评论


答:

1赞 imraklr 12/20/2020 #1

试试这个:

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

评论

1赞 J. B. 12/20/2020
真的很感激!不知道为什么我没有想到这样的事情。感谢您的帮助!
2赞 U13-Forward 12/20/2020 #2

尝试使用 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)])

输出:

[[['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']], [['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']], [['#', '-', '#'], ['#', '-', '#'], ['#', '-', '#']]]
1赞 costaparas 12/20/2020 #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)]

评论

0赞 J. B. 12/20/2020
这非常有帮助,而且很有意义!非常感谢!