2013-01-02 89 views
4

我有2只列出,這是大小相等的名單,像蟒蛇:交換兩個Python列表

list_of_lists = [list1, list2] 

在for循環中兩個list1list2做一些處理之後,我不得不交換它們以便list1變爲list2list2變成初始化爲全零的列表。因此,在迭代結束時list_of_lists有看起來像:

list_of_lists = [list1 which has contents of list2, list2 which has all zeros] 

在C,一個可以只複製的list2list1指針,然後指向list2被初始化爲全零的列表。我如何在Python中做到這一點?

回答

9

這聽起來像你主要在循環內使用list1list2。所以,你可以只是重新分配他們的價值觀:

list1 = list2 
list2 = [0]*len(list2) 

Python中,您還可以縮短這一個班輪:

list1, list2 = list2, [0]*len(list2) 

但在這種情況下,我找到了兩行版本更具可讀性。或者,如果你真的想list_of_lists,則:

list_of_lists = [list2, [0]*len(list2)] 

,或者如果你希望兩個:

list1, list2 = list_of_lists = [list2, [0]*len(list2)] 
1

就像這個...

list_of_lists = [list_of_lists[1], []] 

for i in range(count): 
    list_of_lists[1].append(0) 
1
list_of_lists=[ list_of_lists[1], [0,]*len(list_of_lists[1] ] 

交換的成本與你提到的指針交換相同