Jak transponować elementy w tablicy?

0

Witam

załóżmy że mam tablice

tab=['aaa','bbb','ccc','ddd']

i chcialbym w wyniku transpozycji otrzymać tablicę

tab=['abcd','abcd','abcd']

czyli pierwszy element nowej tablicy na zawierać wszystkie pierwsze elementy starej, drugi element nowej tablicy ma zawierać wszystkiw drufie elementy starej tablicy itd.

Próbowałem zrobić coś takiego:

tab=['aaa','bbb','ccc','ddd']
b=[]
bb=""

for i in range(0,len(tab)):
   for j in range(0,len(tab[i])):
      bb+=a[i][:j]
   b.append(bb)
   bb=""

Ale to nie to co chcę uzyskać

2

No to lecimy :)
Najpierw chcemy ze stringów "aaa", "bbb" etc uzyskać listę literek, zrobimy to przez utworzenie listy z każdego stringa:

tab = ['aaa','bbb','ccc','ddd']
literki = map(lambda x: list(x), tab)

Teraz chcemy połączyć odpowiadające sobie literki:

polaczone_literki = zip(*literki)

Zip utworzy nam krotki na zasadzie [(lista1[0], lista2[0],...,listan[0]), (lista1[1], lista2[1],...,listan[1]), ... , (lista1[n], lista2[n],...,listan[n])]
Oczywiście pierwsza operacja (zamiany stringa na listę) jest zbędna, bo zip sobie poradzi, więc mogliśmy zrobić od razu:

polaczone_literki = zip(*tab)

Ale to nadal nie do końca to co chcemy, bo mamy teraz listę krotek z kolejnymi literkami i musimy ją scalić:

scalone_literki = map(lambda x: "".join(x), polaczone_literki)

Finalnie cała operacja to:

tab = ['aaa','bbb','ccc','ddd']
wynik = map(lambda x: "".join(x), zip(*tab))

1 użytkowników online, w tym zalogowanych: 0, gości: 1