[Tutor] Luke, thanks a lot , here is the perfect code (as per ur suggestion)

Asrarahmed Kadri ajkadri at googlemail.com
Thu Oct 5 21:14:40 CEST 2006


On 10/5/06, Kent Johnson <kent37 at tds.net> wrote:
>
> Asrarahmed Kadri wrote:
> > #Implementation of Pascal Triangle
> >
> > num_of_lines = input("How many lines you want to display")
> >
> > list1 = []
> >
> > for i in range(num_of_lines):
> >     flag = 0
> >     tmp = []
> >     for j in range(i+1):
> >         if flag == 0 or j == i:
> >             tmp.append(1)    # for the first or teh last element of the
> line
> >             flag = 1
> >         else:
> >             tmp.append(list1[i-1][j-1]+list1[i-1][j])   # for rest, add
> > teh numbers in previous  row
> >
> >     list1.append(tmp)
>
> That's good. You could shorten it a little by getting rid of flag and
> just testing for j==0 or j==i. Here is another way to do it, it requires
> priming the output with the first row but the loop is a little shorter:
>
> In [1]: binom = [[1]]
>
> In [3]: for i in range(5):
>    ...:     prev = binom[i]
>    ...:     next = [1] + [ prev[j]+prev[j+1] for j in
> range(len(prev)-1) ] + [1]
>    ...:     binom.append(next)
>    ...:
>    ...:
>
> In [4]: binom
> Out[4]: [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5,
> 10, 10, 5, 1]]
>
> There's a truly hideous one-liner hidden in your solution. It uses
> nested list comprehensions, a hack to refer to the list being built
> within a list comp, and the new conditional expression. Be careful who
> you show this too, it may scare dogs and small children ;) It does
> actually work:


What is this??? I cannot understand a single character.. Explain this in
length.

*list1 = [ [ locals()["_[1]"][i-1][j-1]+locals()["_[1]"][i-1][j] if (j !=
> 0 and j != i) else 1 for j in range(i+1) ] for i in range(num_of_lines) ]
>
> *Now we know why conditional expressions were added to Python 2.5! See
> this recipe for details about the locals() hack:
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/204297
>
> Sorry I couldn't resist :-)
> Kent
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>



-- 
To HIM you shall return.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20061005/897a556b/attachment.htm 


More information about the Tutor mailing list