Bandicoot
Bandicoot

Reputation: 3949

Swap two lists in python

I have a list of 2 lists, which are of equal size, in python like:

list_of_lists = [list1, list2]

In a for loop after doing some processing on both list1 and list2, I have to swap them so that list1 becomes list2 and list2 becomes a list initialized to all zeros. So at the end of the iteration the list_of_lists has to look like:

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

In C, one could just copy the pointers of list2 and list1 and then point list2 to a list initialized to all zeros. How do I do this in python ?

Upvotes: 4

Views: 4616

Answers (3)

Dave
Dave

Reputation: 8091

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

The cost of the swap is the same as the pointer swap you mentioned

Upvotes: 1

unutbu
unutbu

Reputation: 879291

It sounds like you are mainly working with list1 and list2 inside the loop. So you could just reassign their values:

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

Python also allows you to shorten this to a one-liner:

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

but in this case I find the two-line version more readable. Or, if you really want list_of_lists, then:

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

or if you want both:

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

Upvotes: 9

ATOzTOA
ATOzTOA

Reputation: 35950

Like this...

list_of_lists = [list_of_lists[1], []]

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

Upvotes: 1

Related Questions