2013-01-02 88 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] ] 

交换的成本与你提到的指针交换相同