Fast Efficient way to transfer an object to another list

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Wed May 5 02:05:37 EDT 2010


En Fri, 30 Apr 2010 23:16:04 -0300, Jimbo <nilly16 at yahoo.com> escribió:

> Hello I have a relatively simple thing to do; move an object from one
> to list into another. But I think my solution maybe inefficient &
> slow. Is there a faster better way to move my stock object from one
> list to another? (IE, without having to use a dictionary instead of a
> list or is that my only solution?)
>
> [code]
> class stock:
>
>     code = "NULL"
>     price = 0
>
>
> stock_list1 = []
> stock_list2 = []
>
> def transfer_stock(stock_code, old_list, new_list):
>     """ Transfer a stock from one list to another """
>     # is there a more efficient & faster way to
>
>     index = 0
>
>     for stock in old_list:
>
>         temp_stock = stock
>
>         if temp_stock.code == stock_code:
>             new_list.append(temp_stock)
>             del old_list[index]
>         index += 1
>
>     return new_list[/code]

I'd do that in two steps:

def transfer_stock(stock_code, old_list, new_list):
   # find the indexes to transfer
   indexes = [i for i,stock in enumerate(old_list)
              if stock.code==stock_code]
   # actually transfer them
   for index in reversed(indexes):
     stock = old_list[index]
     new_list.append(stock)
     del old_list[index]
   # I would not return anything

-- 
Gabriel Genellina




More information about the Python-list mailing list