在python中交换两个列表

时间:2013-01-02 04:37:33

标签: python list

我有一个2个列表的列表,大小相同,在python中如下:

list_of_lists = [list1, list2]

在对list1list2进行一些处理后的for循环中,我必须交换它们,以便list1变为list2并且list2变为列表初始化为全零。因此,在迭代结束时,list_of_lists必须如下所示:

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

在C中,可以复制list2list1的指针,然后将list2指向初始化为全零的列表。我如何在python中执行此操作?

3 个答案:

答案 0 :(得分: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 :(得分:1)

喜欢这个......

list_of_lists = [list_of_lists[1], []]

for i in range(count):
    list_of_lists[1].append(0)

答案 2 :(得分:1)

list_of_lists=[ list_of_lists[1], [0,]*len(list_of_lists[1] ]

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