Transform list comprehension back to traditional looping construct, how?

42 views
Skip to first unread message

Pepsodent Cola

unread,
Jun 1, 2014, 8:29:38 AM6/1/14
to django...@googlegroups.com
Hi, I want to transform my articles_list5 list comprehension back to a traditional looping construct to make things easier to read.
The articles_list5 returns a list of tuples.

But when I try to do the same using traditional looping in articles_list6 then I just get one long list from everything.  How do I transform list5 to list6 correctly so it still returns a list of tuples?


>>> articles_list5 = [(article.id, article, article.num_publications, uncommented_publications, float(article.num_publications)/total_publicists*100) for article in articles]

List of tuples - :)
>>> articles_list5
[(1, <Article: Django lets you build Web apps easily>, 1, [<Publication: Popular Science>, <Publication: Science News>], 20.0),
(4, <Article: Happy new year 2014!>, 1, [<Publication: Popular Science>, <Publication: Science News>], 20.0),
(2, <Article: NASA uses Python>, 5, [<Publication: Popular Science>, <Publication: Science News>], 100.0),
(3, <Article: Twitter IPO!>, 2, [<Publication: Popular Science>, <Publication: Science News>], 40.0)]


>>> articles_list6 = []
>>>
>>> for x in articles:
...     uncommented = Publication.objects.filter(article__pk=x.id).filter(comment='').count()
       #articles_list6.extend([x.id, x, x.num_publications, uncommented])
...     articles_list6.extend(tuple((x.id, x, x.num_publications, uncommented)))
...
>>>

List of everything - :(
>>> articles_list6
[1, <Article: Django lets you build Web apps easily>, 1, 0,
4, <Article: Happy new year 2014!>, 1, 0,
2, <Article: NASA uses Python>, 5, 2,
3, <Article: Twitter IPO!>, 2, 1]
>>>






Masklinn

unread,
Jun 1, 2014, 8:52:33 AM6/1/14
to django...@googlegroups.com

On 2014-06-01, at 14:29 , Pepsodent Cola <pepsod...@gmail.com> wrote:

> Hi, I want to transform my articles_list5 list comprehension back to a traditional looping construct to make things easier to read.
> The articles_list5 returns a list of tuples.
>
> But when I try to do the same using traditional looping in articles_list6 then I just get one long list from everything. How do I transform list5 to list6 correctly so it still returns a list of tuples?

By using the right method? Why are you calling list.extend?

Pepsodent Cola

unread,
Jun 1, 2014, 9:00:09 AM6/1/14
to django...@googlegroups.com, mask...@masklinn.net
At first I was trying to use list.append but then Python complained that append could only take 1 argument.  So I google around and list.extend said that it could take more arguments so I just went with it.

What is this right method you are thinking about?  My imagination is very limited I only know of append but not sure how to work with it in this situation.

François Schiettecatte

unread,
Jun 1, 2014, 9:23:30 AM6/1/14
to django...@googlegroups.com
.extend() takes as a parameter something that can be iterated over and appends it to the list. Something that can be iterated over includes other lists, sets, tuples, dictionaries, see https://docs.python.org/2/tutorial/datastructures.html

François
> --
> You received this message because you are subscribed to the Google Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
> To post to this group, send email to django...@googlegroups.com.
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/095e6321-4337-4bcb-b55d-07a273f515fb%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Hannu Krosing

unread,
Jun 1, 2014, 11:04:16 AM6/1/14
to django...@googlegroups.com, mask...@masklinn.net
On 06/01/2014 03:00 PM, Pepsodent Cola wrote:
At first I was trying to use list.append but then Python complained that append could only take 1 argument.  So I google around and list.extend said that it could take more arguments so I just went with it.

What is this right method you are thinking about? 
list.append(<tuple>)

instead of

list.append(individual, tuple, elements)

My imagination is very limited I only know of append but not sure how to work with it in this situation.



On Sunday, June 1, 2014 2:52:33 PM UTC+2, Masklinn wrote:

On 2014-06-01, at 14:29 , Pepsodent Cola <pepsod...@gmail.com> wrote:

> Hi, I want to transform my articles_list5 list comprehension back to a traditional looping construct to make things easier to read.
> The articles_list5 returns a list of tuples.
>
> But when I try to do the same using traditional looping in articles_list6 then I just get one long list from everything.  How do I transform list5 to list6 correctly so it still returns a list of tuples?

By using the right method? Why are you calling list.extend?
--

Pepsodent Cola

unread,
Jun 1, 2014, 4:38:15 PM6/1/14
to django...@googlegroups.com

Thank you Hannu and François, now I understand!  I've been searching for almost 4 months to solve this one in my Django project.  :D





--
You received this message because you are subscribed to a topic in the Google Groups "Django users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/UxYLlh_Wce8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users...@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
Reply all
Reply to author
Forward
0 new messages