簡體   English   中英

為什么以下代碼部分的輸出不同?

[英]Why is the output different for following part of code?

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]]

這是經典的Python陷阱

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

創建numCourses新的空列表,同時

G1 = [[]]*numCourses

首先創建(內部)空列表,然后創建一個由numCourses副本組成的列表。 這就是為什么當您在G1更改一個列表時,它們全部都會更改的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM