Почему выходные данные отличаются для следующей части кода? - PullRequest
0 голосов
/ 09 июня 2019

Выход для списка G и G1 отличается.

numCourses = 2
prerequisites = [[1,0]]

G = [[] for i in range(numCourses)]

G1 = [[]]*numCourses

for i,j in prerequisites:
    G[j].append(i)

for i,j in prerequisites:
    G1[j].append(i)

Я получаю следующий вывод G = [[1],[]] и G1 = [[1],[1]]

1 Ответ

1 голос
/ 09 июня 2019

Это классический python gotcha

G = [[] for i in range(numCourses)]

создает numCourses новый пустой список, тогда как

G1 = [[]]*numCourses

сначала создает (внутренний) пустой список, а затем список, состоящий изnumCourses копий этого.Вот почему при изменении одного списка в G1 все они меняются.

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