Как обновить первое значение подсписка другим списком - PullRequest
0 голосов
/ 06 мая 2020

Я хочу добавить 1-й элемент каждого подсписка со значениями другого списка

s1 = input()
s2 = input()

n1 = len(s1)
n2 = len(s2)

T = [[0]*n1]*n2
T[0] = list(range(n1))
for i in range(1,n2):
    T[i][0] = i

print(T)

Вывод (переход):

[[0, 1, 2, 3, 4, 5], [5, 0, 0, 0, 0, 0], [5, 0, 0, 0, 0, 0], [5, 0, 0, 0, 0, 0], [5, 0, 0, 0, 0, 0], [5, 0, 0, 0, 0, 0]]

Вывод (хочу):

[[0, 1, 2, 3, 4, 5], [1, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [3, 0, 0, 0, 0, 0], [4, 0, 0, 0, 0, 0], [5, 0, 0, 0, 0, 0]]

Ответы [ 3 ]

1 голос
/ 06 мая 2020

Здесь позвольте мне рассказать вам, что происходит в вашем коде ...

T = [[0]*n1]*n2

В этой строке вы создали вложенный список, в котором все подсписки указывают на один и тот же подсписок в памяти.

T[0] = list(range(n1))

В этой строке вы создали свой первый подсписок, указывающий на только что созданный список в памяти. Вот почему на выходе первый список такой же, и на него не влияет l oop.

for i in range(1,n2):
T[i][0] = i

Здесь все остальные подсписки (1,5) редактируются, потому что они указывают на то же самое elements.

Итак, решение было бы следующим: Объявить ваш список следующим образом:

T = [[0]*n1 for i in range(n2)]

Таким образом, каждый подсписок указывает на другой подсписок. Надеюсь, этот ответ поможет.

Удачного кодирования!

1 голос
/ 06 мая 2020

Проблема в том, как вы создаете список T - T [0], T [1], ... все содержат ссылку на один и тот же список. Делая T[0] = list(...), вы меняете 0-й элемент на новый список, но все остальное остается прежним. Правильный способ инициализации T:

T = [[0 for _ in range(n1)] for _ in range(n2)]

0 голосов
/ 06 мая 2020
income = [[0, 1, 2, 3, 4, 5],]
i=0
outcome = []
outcome.append(income[0])
for e in income[0]:
    if i!= 0:
        outcome.append([income[0][i],] +[0]*(len(income[0])-1))
    i+=1

print(outcome)
# [[0, 1, 2, 3, 4, 5], [1, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [3, 0, 0, 0, 0, 0], [4, 0, 0, 0, 0, 0], [5, 0, 0, 0, 0, 0]]


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...