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. -- https://mail.python.org/mailman/listinfo/python-list