Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #83199

Re: Help with map python 2

From Jussi Piitulainen <jpiitula@ling.helsinki.fi>
Newsgroups comp.lang.python
Subject Re: Help with map python 2
Date 2015-01-04 14:08 +0200
Organization A noiseless patient Spider
Message-ID <qotoaqe7nol.fsf@ruuvi.it.helsinki.fi> (permalink)
References <60e62263-6cd1-48b9-acbc-f1a0b947b8c9@googlegroups.com>

Show all headers | View raw


flebber writes:

> In repsonse to this question: Write a program that prints the first
> 100 members of the sequence 2, -3, 4, -5, 6, -7, 8.
> 
> This is my solution it works but ugly.

Seems respectable to me, except that you are taking fewer than 100
elements. But I'd prefer the expressions that you are looking for.

> series = range(2,100)
> # answer = [(x,(y* -1)) for x, y in series[::2]]

You could do what mathematicians do when they deal with alternating
signs: they raise -1 to the power of the index to get an appropriate
multiplier.

   >>> [ n * (-1) ** n for n in range(10) ]
   [0, -1, 2, -3, 4, -5, 6, -7, 8, -9]
   >>> 

Or you could do here what you attempt to do with map below. See below.

> # print(answer)
> answer = []
> for item in series:
>     if item % 2 != 0:
>         answer.append(item * -1)
>     else:
>         answer.append(item)
> 
> print(answer)
> 
> I know I should be better off doing this with map but cannot get it
> to work. I understand also that map returns a generator so this
> solution should only working in python2(correct me please if I am
> wrong).
> 
> In [6]: map?
> Type:       builtin_function_or_method
> String Form:<built-in function map>
> Namespace:  Python builtin
> Docstring:
> map(function, sequence[, sequence, ...]) -> list
> 
> Just getting something wrong
> list(map((lambda x: x * -1 if (x%2 != 0)), series))

You are trying to use a binary expression. There are no binary
expressions. Add an else branch to make it ternary:

   lambda x : x if x % 2 == 0 else -x

But never mind the number of branches, the serious point is that you
didn't specify a value for when the condition is not true. It doesn't
make sense without that.

There's nothing wrong with a list comprehension, or the corresponding
generator expression if you want a generator. It's fine. Map's fine.

Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Help with map python 2 flebber <flebber.crue@gmail.com> - 2015-01-04 03:34 -0800
  Re: Help with map python 2 Chris Angelico <rosuav@gmail.com> - 2015-01-04 22:47 +1100
  Re: Help with map python 2 Alec Taylor <alec.taylor6@gmail.com> - 2015-01-04 22:47 +1100
  Re: Help with map python 2 Alec Taylor <alec.taylor6@gmail.com> - 2015-01-04 22:48 +1100
  Re: Help with map python 2 Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2015-01-04 14:08 +0200
    Re: Help with map python 2 flebber <flebber.crue@gmail.com> - 2015-01-05 03:33 -0800
      Re: Help with map python 2 Terry Reedy <tjreedy@udel.edu> - 2015-01-05 18:28 -0500
        Re: Help with map python 2 Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-06 12:30 +1100
  Re: Help with map python 2 Peter Otten <__peter__@web.de> - 2015-01-04 17:33 +0100
  Re: Help with map python 2 Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2015-01-04 12:32 -0500
  Re: Help with map python 2 Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2015-01-04 12:41 -0500
  Re: Help with map python 2 Dan Stromberg <drsalists@gmail.com> - 2015-01-04 10:06 -0800
  Re: Help with map python 2 Terry Reedy <tjreedy@udel.edu> - 2015-01-04 16:13 -0500
    Re: Help with map python 2 flebber <flebber.crue@gmail.com> - 2015-01-05 03:37 -0800
  Re: Help with map python 2 Sayth Renshaw <flebber.crue@gmail.com> - 2015-01-04 21:22 +0000

csiph-web