Не получается заполнить двумерный массив с помощью for
c = 3
st = [[0,0]]*c
for i in range (0,c ):
a = int(input())
b = int(input())
st[i][0] = a
st[i][1] = b
print(st)
Данный код при вводе например
3
1
2
0
0
4
выводит [[0, 4], [0, 4], [0, 4]], а не ожидаемое мной [[3, 1], [2, 0], [0, 4]].
Вопрос наверное глупый, но я не понимаю - почему так? i же не успевает проскочить и обновить все элементы массива?
Ответы (3 шт):
Автор решения: finally
→ Ссылка
почему не сделать это вот так?
array = []
size = int(input('size'))
for i in range(size):
buff = []
for j in range(2):
value = int(input('value'))
buff.append(value)
array.append(buff)
Автор решения: Valera
→ Ссылка
c = 3
st = []
for i in range(c):
a = int(input())
b = int(input())
st.extend([[a, b]])
print(st)
Ваш цикл перезаписывает элементы вложенного списка каждый раз
Автор решения: CrazyElf
→ Ссылка
Чтобы при инициализации получались разные списки, а не копии одного и того же списка (как в вашем случае), её обычно делают так:
st = [[0,0] for _ in range(c)]
_ здесь - конвенциональное название переменной, которая синтаксически нужна в коде, но её значение нигде не используется.