Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #42147
| From | Wolfgang Maier <wolfgang.maier@biologie.uni-freiburg.de> |
|---|---|
| Subject | list comprehension misbehaving |
| Date | 2013-03-28 15:25 +0000 |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.3887.1364484337.2939.python-list@python.org> (permalink) |
Dear all, with
a=list(range(1,11))
why (in Python 2.7 and 3.3) is this explicit for loop working:
for i in a[:-1]:
a.pop() and a
giving:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
[1]
but the equivalent comprehension failing:
[a.pop() and a for i in a[:-1]]
giving:
[[1], [1], [1], [1], [1], [1], [1], [1], [1]]
???
Especially, since these two things *do* work as expected:
[a.pop() and a[:] for i in a[:-1]]
[a.pop() and print(a) for i in a[:-1]] # Python 3 only
Thanks for your help,
Wolfgang
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
list comprehension misbehaving Wolfgang Maier <wolfgang.maier@biologie.uni-freiburg.de> - 2013-03-28 15:25 +0000 Re: list comprehension misbehaving duncan smith <buzzard@invalid.invalid> - 2013-03-28 15:54 +0000
csiph-web