Question about 'for' loop

Steve Holden steve at holdenweb.com
Sat Aug 18 01:55:24 CEST 2007


Robert Dailey wrote:
> Hi,
> 
> I noticed that the 'for' loop can be used inline with a list definition. 
> For example:
> 
> print [i for i in mylist]
> 
> My first question is what is the name for this? I couldn't find this 
> usage in the python docs; I only managed to learn about it through code 
> samples on the internet.
> 
That there is a "list comprehension".

> Secondly, I'm wondering how I can use this method of a for loop to 
> append strings to strings in a list. For example:
> 
> mylist = [
> "Hello ",
> "Hello again "
> ]
> 
> I should be able to do this:
> 
> print [ i + "World" for i in mylist ]
> 
> Which should yield the output:
> 
> ["Hello World", "Hello again world"]
> 
Who says you should? Beside you, that is. I am afraid the interpreter 
isn't psychic, and it doesn't have a DWIM [1] mode.

> However, instead I get an error message saying "TypeError: cannot 
> concatenate 'str' and 'list' objects"
> 
> How can I achieve the above? Thanks for reading.
> 
It's just a matter of understanding the syntax in a little more depth. 
In a week's time it will be blindingly obvious.

 >>> nicknames = ["bozo", "newbie", "newless cloob", "and welcome to 
c.l.py"]
 >>> [("hello " + name) for name in nicknames]
['hello bozo', 'hello newbie', 'hello newless cloob', 'hello and welcome 
to c.l.py']
 >>>

So, treat item [-1] from that list as the real sentiment of this message:

 >>> [("hello " + name) for name in nicknames][-1]
'hello and welcome to c.l.py'

regards
  Steve

[1]: Do What I Mean [and never mind what I say ...]
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd           http://www.holdenweb.com
Skype: holdenweb      http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------




More information about the Python-list mailing list