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


Groups > comp.lang.python > #62087

Re: Concatenate string list to number list to form title - Logic needed.

From Jussi Piitulainen <jpiitula@ling.helsinki.fi>
Newsgroups comp.lang.python
Subject Re: Concatenate string list to number list to form title - Logic needed.
Date 2013-12-16 20:13 +0200
Organization University of Helsinki
Message-ID <qotiouomzpd.fsf@ruuvi.it.helsinki.fi> (permalink)
References <2333bfb4-cd72-4ed0-9b28-d8dbe26b5be2@googlegroups.com>

Show all headers | View raw


Ravi Prabakaran writes:

> I'm completely new to python. I just need simple logic to get output
> without any loops.
> I have list of string and list of list of numbers.
> Each string should be concatenated with every third and fourth
> values to generate proper titles in list of strings.
> 
> t = ['Start','End']
> a = [[1,2,3,4],
>      [5,6,7,8]]
> 
> 
> Expected Result : ( list of strings )
> 
> ['Start - 3 , End - 4',
>  'Start - 7 , End - 8']
> 
> Note : First 2 values from each list should be ignored.
> 
> 
> Could anyone please guide me with best solution without loops ?

That's a strange requirement - to have repetition without loops, in
Python, and still have a best solution.

I suppose it's fine to have a (built-in) function do the looping for
you so that there is no explicit loop in your own code. The .format
method of Python strings can do each individual string:

   list(map('{2} - {0} , {3} - {1}'
            .format('{0[2]}', '{0[3]}', *t)
            .format, a))

The first (inner) call of .format builds the actual format string
whose .format method then builds each output string: {0[2]} in a
format string refers to the argument position 0 and its element
position 2; *t spreads the two elements of t as further positional
arguments.

If you have any background in functional programming with lists, map
should be fine and familiar. I would probably build and name the
format string outside the actual call as follows (untested).

   start, end = t
   format = ( '{2} - {0} , {3} - {1}'
              .format('{0[2]}', '{0[3]}', start, end)
              .format )
   list(map(format, a))

All other things that come to mind would either be too much like loops
or they couldn't possibly be a best solution.

Incidentally, if you want a one-liner and tolerate long lines, the
first form I gave is perfectly good for that purpose.

I think *t and str.format require version 3 of Python.

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


Thread

Concatenate string list to number list to form title - Logic needed. Ravi Prabakaran <ravi.itm@gmail.com> - 2013-12-16 09:16 -0800
  Re: Concatenate string list to number list to form title - Logic needed. Chris Angelico <rosuav@gmail.com> - 2013-12-17 04:29 +1100
    Re: Concatenate string list to number list to form title - Logic needed. Chris Angelico <rosuav@gmail.com> - 2013-12-17 04:51 +1100
    Re: Concatenate string list to number list to form title - Logic needed. Chris Angelico <rosuav@gmail.com> - 2013-12-17 04:52 +1100
  Re: Concatenate string list to number list to form title - Logic needed. Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-12-16 17:43 +0000
  Re: Concatenate string list to number list to form title - Logic needed. Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2013-12-16 20:13 +0200
    Re: Concatenate string list to number list to form title - Logic needed. Peter Otten <__peter__@web.de> - 2013-12-16 19:37 +0100
  Re: Concatenate string list to number list to form title - Logic needed. John Gordon <gordon@panix.com> - 2013-12-16 18:50 +0000
  Re: Concatenate string list to number list to form title - Logic needed. Terry Reedy <tjreedy@udel.edu> - 2013-12-16 15:23 -0500

csiph-web