将一维数组转换为二维数组

时间:2020-02-28 04:35:40

标签: python arrays python-3.x python-2.7

问题在下面:

二维数组表示为一维整数数组。数组的第一个整数表示2d数组每一行的长度。其余的整数是数组的每个元素,首先是第1行,然后是第2行,依此类推

例如:

array = [5,11,12,13,14,15,16,17,18,19,20]

11,12,13,14,15
16,17,18,19,20

如果我像arr [1,2] = 12那样查询

我正尝试如下将c ++代码转换为python,但面临问题,我对python还是很陌生

def get_ar(arr, query):
    t = arr[0]
    k = arr[1]
    for i in range t:
        // go to new line

但这不是解决问题的逻辑方法

2 个答案:

答案 0 :(得分:2)

这是解决问题的简单方法。

for i in range(1,len(array),array[0])创建一个范围,其中i等于1(跳过0,因为我们不希望array中的第一个数字),然后加上array[0]的值每次。

array[i:i+array[0]]选择从ii+array[0]的值范围,这将总共为您提供array[0]个元素。

array = [5,11,12,13,14,15,16,17,18,19,20]

array2d = [array[i:i+array[0]] for i in range(1,len(array),array[0])]

答案 1 :(得分:0)

output = []
for i in range(len(array)//array[0]):
  output.append(array[i*array[0]+1:(i+1)*array[0]+1])