Re: Rewriting Recipe/410687 without map and lambda

2007-12-12 Thread sofeng
On Dec 11, 8:29 pm, Terry Reedy [EMAIL PROTECTED] wrote:
 sofeng [EMAIL PROTECTED] wrote in message

 news:[EMAIL PROTECTED]
 |I would like to use the following recipe to transpose a list of lists
 | with different 
 lengths.http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/410687
 |
 | Here is an example of what I would like to do:
 |
 | Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
 | [GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
 | Type help, copyright, credits or license for more information.
 |  a = [[1,2,3],[4,5,6,7],[8,9]]
 |  print map(lambda *row: list(row), *a)
 | [[1, 4, 8], [2, 5, 9], [3, 6, None], [None, 7, None]]
 | 
 |
 | However, in the Python 3000 FAQ (http://www.artima.com/weblogs/
 | viewpost.jsp?thread=211200), Guido says not to use map with lambda
 | because a list comprehension is clearer and faster.
 |
 | How can I rewrite the above recipe using a list comprehension instead?

 Here is the sort of thing Guido is talking about:

  a = [[1,2,3],[4,5,6,7],[8,9]]
  [list(r) for r in zip(*a)]

 [[1, 4, 8], [2, 5, 9]]

 Except in this case, zip does not pad, while map does, so the list comp
 form has to be

  [list(r) for r in map(None, *a)]

 [[1, 4, 8], [2, 5, 9], [3, 6, None], [None, 7, None]]

 but at this point, it is about as easy to put the lambda in place of None.

 But when one maps one sequence or equal-length sequences, Guido's point
 applies.

 tjr

Thank you very much.
-- 
http://mail.python.org/mailman/listinfo/python-list


Rewriting Recipe/410687 without map and lambda

2007-12-11 Thread sofeng
I would like to use the following recipe to transpose a list of lists
with different lengths. 
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/410687

Here is an example of what I would like to do:

Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type help, copyright, credits or license for more information.
 a = [[1,2,3],[4,5,6,7],[8,9]]
 print map(lambda *row: list(row), *a)
[[1, 4, 8], [2, 5, 9], [3, 6, None], [None, 7, None]]


However, in the Python 3000 FAQ (http://www.artima.com/weblogs/
viewpost.jsp?thread=211200), Guido says not to use map with lambda
because a list comprehension is clearer and faster.

How can I rewrite the above recipe using a list comprehension instead?

-sofeng
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Parsing HTML

2007-02-23 Thread sofeng
On Feb 8, 11:43 am, metaperl [EMAIL PROTECTED] wrote:
 On Feb 8, 2:38 pm, mtuller [EMAIL PROTECTED] wrote:

  I am trying to parse a webpage and extract information.

 BeautifulSoup is a great Python module for this purpose:

http://www.crummy.com/software/BeautifulSoup/

 Here's an article on screen scraping using it:

http://iwiwdsmi.blogspot.com/2007/01/how-to-use-python-and-beautiful-...

This article has moved to 
http://iwiwdsmp.blogspot.com/2007/02/how-to-use-python-and-beautiful-soup-to.html

-- 
http://mail.python.org/mailman/listinfo/python-list