-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of John Fouhy
Sent: Monday, February 26, 2007 4:00 PM
To: Smith, Jeff
Cc: [email protected]
Subject: Re: [Tutor] Another list comprehension question
On 27/02/07, Smith, Jeff <[EMAIL PROTECTED]> wrote:
>> I'm probably missing something simple here but is there anyway to
>> accomplish the following with a list comprehension?
>>
>> def get_clists():
>> return [1, 2, 3]
>>
>> def get_clist(num):
>> if num == 1:
>> return ['a', 'b', 'c']
>> if num == 2:
>> return ['x', 'y', 'z']
>> if num == 3:
>> return ['p', 'q']
>This would be better represented as a dictionary:
>
>>>> clists = { 1:['a', 'b', 'c'],
>... 2:['x', 'y', 'z'],
>... 3:['p', 'q'] }
This was a mockup from a much larger code fragment where the
get_clists() and get_clist() functions are part of an API to a CMS
system which return lists constructed from calls into the CMS system.
>> files = list()
>> for clist in get_clists():
>> files += get_clist(clist)
>Just a comment -- you could write this as
"files.extend(get_clist(clist))", which would be slightly more
efficient.
>This will do it:
>
>Or [x for k in get_clists() for x in get_clist(k)] using your original
structure.
I realize however that this is probably much less efficient since you
are iterating over the inner list rather than just taking it on in
whole.
Thanks!
Jeff
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor