[Tutor] Python Questions Help

Alan Gauld alan.gauld at btinternet.com
Mon Oct 27 01:22:05 CET 2014


On 26/10/14 22:15, Caroline H wrote:

> For example,
> lst1 = [2,5,6,7,2]
> lst2 = [2,4]
>
> it comes up with new_list = [2] when I need it to come up with new_list
> = [2,2]

Check the logic in the if statement. Walk through it and se if it does 
what you expect. You are basically doing the right thing, except...

> The code I have so far is:
>
> new_list = []
> i = 0
> j = 0
> if len(lst1)<=len(lst2):
>      for i in range(len(lst1)):
>          if lst1[i] in lst2:
>              new_list.append(lst1[i])
> else:
>      for j in range(len(lst2)):
>          if lst2[j] in lst1:
>              new_list.append(lst2[j])

Rather than using indexing you should use the 'for' loop directly
on the lists:

for item in list
    if item in otherlist:
       newlist.append(item)


Its much easier to read and leaves Python to do all the index management 
for you.

Its rare to need to use indexes in conjunction with a
'for' loop.

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos



More information about the Tutor mailing list