在一个程序中,我正在写一个旋转二维数组的需求。在寻找最佳解决方案时,我发现了这种令人印象深刻的一线功能:
rotated = zip(*original[::-1])
我现在在程序中使用它,它按预期工作。我的问题是,我不了解它是如何工作的。
如果有人可以解释所涉及的不同功能如何实现所需的结果,我将不胜感激。
考虑以下二维列表:
original = [[1, 2],
[3, 4]]
让我们将其逐步分解:
>>> original[::-1] # elements of original are reversed
[[3, 4], [1, 2]]
此列表传递给zip()
使用参数unpacking,因此zip
调用最终等效于此:
zip([3, 4],
[1, 2])
# ^ ^----column 2
# |-------column 1
# returns [(3, 1), (4, 2)], which is a original rotated clockwise
希望注释能够清楚说明其zip
作用,它将基于索引将来自每个可迭代输入的元素进行分组,或者换句话说,将列进行分组。
我有一个一维数组,它代表一个二维网格。行和列的数量是已知的。从“左上角”到“右下角”读取,因此第一项为R1C1,最后一项为RXCY(其中X=行编号,Y=列编号; 我的目标是翻转或旋转二维数组,并返回一个新的一维数组表示转换。 我尝试了按位操作,但无法让它与行/行计数可能是奇数或偶数的事实一起工作。我也尝试了迭代方法,但在逻辑杂草中迷失了方向。 一个最简单的javascript示例:9项数组中的3^
问题内容: 我想知道如何在Python中声明一个二维数组。 前两个任务工作正常。但是当我尝试做时,出现以下错误: 我在尝试声明二维数组时做任何愚蠢的事情吗? 编辑: 但是我不知道数组(行和列)中的元素数量。 问题答案: 您不会在Python中“声明”数组或其他任何东西。您只需分配一个(新)变量。如果要使用多维数组,只需添加一个新数组作为数组元素。 要么
问题内容: 我想通过指定2D数组中的列数将一维数组转换为二维数组。可能会像这样工作: numpy是否具有与我的虚构函数“ vec2matrix”相似的功能?(我知道您可以像2D数组一样索引1D数组,但这不是我拥有的代码中的选项- 我需要进行此转换。) 问题答案: 您要阵列。 其中,根据输入数组的大小推断新维的大小。
问题内容: 我想定义一个没有初始化长度的二维数组,如下所示: 但这不起作用… 我已经尝试过下面的代码,但是它也是错误的: 错误: 我怎么办呢? 问题答案: 从技术上讲,你正在尝试索引未初始化的数组。你必须先使用列表初始化外部列表,然后再添加项目。Python将其称为“列表理解”。 你现在可以将项目添加到列表中: 请注意,矩阵是地址主地址,换句话说,“ y索引”位于“ x索引”之前。 尽管你可以根据
问题内容: 我有这种数组 我需要将其转换为一维数组。我怎样才能做到这一点? 例如这样 任何内置函数的php均可用于此数组转换? 问题答案: 对于您有限的用例,可以这样做: 当子数组对此有很多条目时,可以将其更一般化:
问题内容: 我试图使字符串到Python编写的。但是如果不使用循环就无法旋转它。如何只用1-2行编写代码,以便获得所需的模式? 问题答案: 您可以切片并添加字符串: 这给您最后一个字符: 这是最后的一切: 最后,添加。