Преобразование одномерного массива в двухмерное - PullRequest
1 голос
/ 28 февраля 2020

Проблема ниже:

Двумерный массив представлен как одномерный массив целых чисел. Первое целое число массива обозначает длину каждой строки двухмерного массива. Остальные целые числа - это каждый элемент массива, сначала строка 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 ]

2 голосов
/ 28 февраля 2020

Вот простой способ ее решения.

for i in range(1,len(array),array[0]) создает диапазон с i, равным 1 (пропускает 0, потому что нам не нужно первое число в array), затем добавляет значение array[0] каждый раз.

array[i:i+array[0]] выбирает диапазон значений от i до i+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])]
0 голосов
/ 28 февраля 2020
output = []
for i in range(len(array)//array[0]):
  output.append(array[i*array[0]+1:(i+1)*array[0]+1])
...