To jest pytanie z poradami do gry w golfa w pythonie .
Załóżmy, że masz dwie listy ciągów i chcesz połączyć odpowiednie wpisy z każdej listy. Np. Za pomocą a=list("abcd")
i b=list("1234")
, oblicz ["a1","b2","c3","d4"]
.
Jest to trywialne w językach programowania opartych na macierzach, w których operacje zwykle dotyczą członków list. Na przykład w moim języku golfowym Pip kod jest po prostu a.b
. Ale w Pythonie nie jest to takie proste.
Pythonicznym sposobem jest prawdopodobnie użycie zip
i odczytanie listy (25 znaków):
[x+y for x,y in zip(a,b)]
Inną metodą jest map
funkcja lambda (23):
map(lambda x,y:x+y,a,b)
Oto najkrótszy, jaki wymyśliłem (21):
map("".join,zip(a,b))
Czy jest jakaś krótsza metoda?
Załóżmy, że listy mają tę samą długość i że potrzebny jest jakiś rodzaj iterowalności (więc map
w Pythonie 3 obiekt jest w porządku).