@newfolder_js

Как преобразовать одномерный массив в двумерный?

Есть массив A[i]=1 2 3 4 5 6
теперь надо сделать из этого двумерный массив который количество столбцов и строк задается пользователем

for i in range (n):
         for j in range (m):
                B[i][j]=A[i]

должно получиться либо
1 2
3 4
5 6
либо
1 2 3
4 5 6
  • Вопрос задан
  • 2494 просмотра
Решения вопроса 1
@PavelMos
1.если так перебирать то создаться массив больший по размеру чем нужно
чтобы подряд добавлят элементы из массива, можно исползоват счётчик.
2. b[i][j]=... это присвоение значения элементу в уже созданном массиве. А его пока нет. Можно создат массив заранее с нужной размерностю и заполнит нулями но делать это нужно через цикл или генератор списков (вложенных списков) а не простым умножением элементов
x=[[0]*n]*m так как это будут ссылки на объект т.е. при изменении одного вложенного массива будет менятся и второй

A=[1, 2, 3, 4, 5, 6]
n=2
m=3
c=0
B=[[0]*m for i in range (n)]
for i in range (n):
         for j in range (m):
                B[i][j]=A[c]
                c+=1

print (B)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну. Код у тебя почти правильный.
Всё что тебе осталось - это найти формулу соответствия между индексами двухмерного массива r, c и индексом одномерного массива k.
Подсказка: значения k для массива размером 2 x 4.
k   c=0 1 2 3
    +---------
r=0 | 0 1 2 3 
r=1 | 4 5 6 7
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы