2013-07-05 2 views
1

list_set이라는 빈 목록을 만들고 기존 목록 인 original_list의 복사본을 추가하는 함수가 있으므로 list_set[0]original_list입니다.Python 목록 복사

이 함수는 list_set[0]을 복사하고 무작위로 값을 선택하고 기존 함수 new_sum을 기반으로 조작 한 다음이 새 목록을 list_set[1]으로 추가하십시오.

마찬가지로, 함수 ( list_set[0]와 동일하지 않다) list_set[1] 복사 선택 값을 랜덤 list_set[1] 및 기능 new_sum에 기초하여 그것을 를 조작하고 list_set[2]로 추가한다.

이 기능은 입니다.

제 코드에서는 함수가 original_list의 300 개의 동일한 복사본을 만들고 각 목록에서 임의로 값을 조작하고 있음을 알았습니다.

def condition_manipulate(value): 
    list_set=[] 
    for i in range(0,value): 
     new_list=original_list[:] 
     i=random.choice(range(len(original_list))) 
     new_list[i]=new_sum(new_list[i]) 
     list_set.append(new_list) 
    return list_set 

이 코드는 어떻게 수정합니까? 도움을 크게 주시면 감사하겠습니다.

+0

깊은 사본이 필요합니다. 이것 좀 봐 : http://stackoverflow.com/questions/948032/if-slicing-does-not-create-a-copy-of-a-list-nor-does-list-how-can-i-get- a-real? rq = 1 – NWard

+0

'new_sum '이란 무엇입니까? –

+0

new_sum은 실제로 조작을 수행하는 또 다른 함수입니다. – user2509830

답변

0

이전에 지적한 바와 같이 i를 덮어 쓰는 문제 이외에 실제로는 항상 원래의 목록을 다시 가지고있는 것 같습니다. 다음과 같은 경우는 어떻습니까?

def condition_manipulate(value): 
    list_set=[original_list] 
    for i in range(0,value): 
     new_list=list_set[-1][:] 
     i=random.choice(range(len(original_list))) 
     new_list[i]=new_sum(new_list[i]) 
     list_set.append(new_list) 
    return list_set