<html><body bgcolor="#FFFFFF"><div>Shouldn't there be a way to do this without type checking? Duck typing!<br><br>Sent from my iPhone</div><div><br>On Sep 9, 2010, at 7:33 AM, Joel Goldstick <<a href="mailto:joel.goldstick@gmail.com">joel.goldstick@gmail.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div><br><br><div class="gmail_quote">On Thu, Sep 9, 2010 at 7:59 AM, Shashwat Anand <span dir="ltr"><<a href="mailto:anand.shashwat@gmail.com"><a href="mailto:anand.shashwat@gmail.com">anand.shashwat@gmail.com</a></a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br><br><div class="gmail_quote"><div><div></div><div class="h5">On Thu, Sep 9, 2010 at 3:11 PM, Roelof Wobben <span dir="ltr"><<a href="mailto:rwobben@hotmail.com" target="_blank"><a href="mailto:rwobben@hotmail.com">rwobben@hotmail.com</a></a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div>
<br> <br>
<hr>
From: <a href="mailto:anand.shashwat@gmail.com" target="_blank"><a href="mailto:anand.shashwat@gmail.com">anand.shashwat@gmail.com</a></a><br>Date: Thu, 9 Sep 2010 15:08:10 +0530<br>Subject: Re: [Tutor] recursive problem<br>To: <a href="mailto:rwobben@hotmail.com" target="_blank"><a href="mailto:rwobben@hotmail.com">rwobben@hotmail.com</a></a><br>
CC: <a href="mailto:tutor@python.org" target="_blank"><a href="mailto:tutor@python.org">tutor@python.org</a></a><br><br><br><br>
<div><div><div></div><div>On Thu, Sep 9, 2010 at 2:21 PM, Roelof Wobben <span dir="ltr"><<a href="mailto:rwobben@hotmail.com" target="_blank"><a href="mailto:rwobben@hotmail.com">rwobben@hotmail.com</a></a>></span> wrote:<br>
<blockquote style="padding-left: 1ex;">
<div>Hello, <br> <br>I have this :<br> <br>def recursive_count(target, nested_num_list):<br> """<br> >>> recursive_count(2, [2, 9, [2, 1, 13, 2], 8, [2, 6]])<br> 4<br> >>> recursive_count(7, [[9, [7, 1, 13, 2], 8], [7, 6]])<br>
2<br> >>> recursive_count(15, [[9, [7, 1, 13, 2], 8], [2, 6]])<br> 0<br> >>> recursive_count(5, [[5, [5, [1, 5], 5], 5], [5, 6]])<br> 6<br> """<br> for element in nested_num_list:<br>
if type(element) == type([]):<br> test = recursive_count(target, element)<br> print element, target<br> if element == target :<br> count = count + 1<br> return count<br> <br>if __name__ == "__main__":<br>
import doctest<br> doctest.testmod()<br></div></blockquote></div></div></div></div></blockquote></div></div></div></blockquote><div><br>What you are trying to do is walk through the list. If you get a value and not another list, check if it is the value you are counting. If it is, added it to your count.<br>
When you are done walking, return your count. If you get another list, walk through the list <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div><div><div><blockquote style="padding-left: 1ex;">
<div>So here is my stab at the code <br></div></blockquote></div></div></div></div></blockquote></div></div></div></blockquote><div> 14 count = 0 # set your count to 0<br>
15 for element in nested_num_list: # walk through each element<br> 16 if type(element) == type([]):<br> 17 count += recursive_count(target, element) # since its another list start anew and add the count result to what you already have<br>
18 elif element == target: # its a value, so check if its YOUR value, and if it is, increment your counter<br> 19 count += 1<br> 20 #print element, count<br>
21 return count # must be done. You get here each time you walk thru a list<br> 22 <br><br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div><div><div><blockquote style="padding-left: 1ex;">
<div> <br>Now I get this message :<br> <br><font size="2">UnboundLocalError: local variable 'count' referenced before assignment<br></font></div></blockquote>
<div><br>It is because you are doing count = count + 1<br>But where is count defined.<br> <br></div>
<blockquote style="padding-left: 1ex;">
<div><font size="2"> <br>But if I do this :<br> <br>def recursive_count(target, nested_num_list):<br> """<br> >>> recursive_count(2, [2, 9, [2, 1, 13, 2], 8, [2, 6]])<br> 4<br> >>> recursive_count(7, [[9, [7, 1, 13, 2], 8], [7, 6]])<br>
2<br> >>> recursive_count(15, [[9, [7, 1, 13, 2], 8], [2, 6]])<br> 0<br> >>> recursive_count(5, [[5, [5, [1, 5], 5], 5], [5, 6]])<br> 6<br> """<br> count = 0 <br>
for element in nested_num_list:<br> if type(element) == type([]):<br> test = recursive_count(target, element)<br> print element, target<br> if element == target :<br> count = count + 1<br>
return count<br> <br>if __name__ == "__main__":<br> import doctest<br> doctest.testmod()<br> <br>The count will always be 0 if a nested list is being found.<br> <br>What's the python way to solve this <br>
</font></div></blockquote>
<div><br>I am not sure what do you want to achieve by this ?<br>What is the problem statement ?</div>
<div> </div>
</div></div><div>The problem statement is that I must count how many times the target is in the nested_list.</div>
<div>So I thougt that every nested list the function is called again so this list is also iterated.</div></div></div></blockquote></div></div><div><br>Let's say n, l = 2, [2, 9, [2, 1, 13, 2], 8, [2, 6]]<br>Simply Flatten the list l, which will be then be; flatten(l) = [ 2, [2, 9, 2, 1,13, 2, 8, 2, 6 ]<br>
Now count for n; flatten.count(n)<br><br><br> </div></div><br>-- <br>~l0nwlf<br>
<br>_______________________________________________<br>
Tutor maillist - <a href="mailto:Tutor@python.org"><a href="mailto:Tutor@python.org">Tutor@python.org</a></a><br>
To unsubscribe or change subscription options:<br>
<a href="http://mail.python.org/mailman/listinfo/tutor" target="_blank"><a href="http://mail.python.org/mailman/listinfo/tutor">http://mail.python.org/mailman/listinfo/tutor</a></a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Joel Goldstick<br><br>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Tutor maillist - <a href="mailto:Tutor@python.org"><a href="mailto:Tutor@python.org">Tutor@python.org</a></a></span><br><span>To unsubscribe or change subscription options:</span><br><span><a href="http://mail.python.org/mailman/listinfo/tutor">http://mail.python.org/mailman/listinfo/tutor</a></span><br></div></blockquote></body></html>