为什么以下代码部分的输出不同?

时间:2019-06-09 16:00:22

标签: python list

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 个答案:

答案 0 :(得分:1)

这是经典的Python陷阱

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

同时创建numCourses个空白列表

G1 = [[]]*numCourses

首先创建一个(内部)空列表,然后创建一个由numCourses个副本组成的列表。因此,当您在G1中更改一个列表时,所有列表都会更改。