python 复制列表内容_在Python中深入复制列表

我有一个列表副本的问题:

所以当我从’get_edge’得到E0后,我通过调用’E0_copy = list(E0)’复制一个E0。这里我猜E0_copy是E0的深拷贝,我将E0_copy传递给’karger(E)’。但是在主函数中。

为什么在for循环之前的’print E0 [1:10]’的结果与for循环之后的结果不一样?

下面是我的代码:

def get_graph():

f=open('kargerMinCut.txt')

G={}

for line in f:

ints = [int(x) for x in line.split()]

G[ints[0]]=ints[1:len(ints)]

return G

def get_edge(G):

E=[]

for i in range(1,201):

for v in G[i]:

if v>i:

E.append([i,v])

print id(E)

return E

def karger(E):

import random

count=200

while 1:

if count == 2:

break

edge = random.randint(0,len(E)-1)

v0=E[edge][0]

v1=E[edge][1]

E.pop(edge)

if v0 != v1:

count -= 1

i=0

while 1:

if i == len(E):

break

if E[i][0] == v1:

E[i][0] = v0

if E[i][1] == v1:

E[i][1] = v0

if E[i][0] == E[i][1]:

E.pop(i)

i-=1

i+=1

mincut=len(E)

return mincut

if __name__=="__main__":

import copy

G = get_graph()

results=[]

E0 = get_edge(G)

print E0[1:10] ## this result is not equal to print2

for k in range(1,5):

E0_copy=list(E0) ## I guess here E0_coypy is a deep copy of E0

results.append(karger(E0_copy))

#print "the result is %d" %min(results)

print E0[1:10] ## this is print2

提前致谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值