13
1
This is a tips question for golfing in python.
Suppose you have two lists of strings, and you want to concatenate the corresponding entries from each list. E.g. with a=list("abcd")
and b=list("1234")
, calculate ["a1","b2","c3","d4"]
.
This is trivial in array-based programming languages, where operations generally apply memberwise to lists. For example, in my golfing language Pip, the code is simply a.b
. But in Python, it's not so easy.
The Pythonic way is probably to use zip
and a list comprehension (25 chars):
[x+y for x,y in zip(a,b)]
Another method is map
with a lambda function (23):
map(lambda x,y:x+y,a,b)
The following is the shortest I've come up with (21):
map("".join,zip(a,b))
Is there any shorter method?
Assume that the lists are the same length and that some kind of iterable is all that's needed (so a map
object is fine in Python 3).
possible duplicate of Tips for golfing in Python
– Mast – 2015-05-06T12:29:31.687@Mast Does the tips list contain an answer which addresses this specific question? – Martin Ender – 2015-05-06T18:23:11.777
@MartinBüttner If it isn't, it should. Prevents cluttering and keeps all the tricks togeter, etc. – Mast – 2015-05-06T19:47:44.153