2016-09-22 63 views
-2

所以,我的問題是,我想轉我的列表行到例如列 列:Python中,字符串列表,行到

[ 「AAA」, 「BBB」, 「CCC」] => [「ABC」,「ABC」,「ABC」]

找不到有效的方法來做到這一點。

+0

'拉鍊(*(名單(i)對於我在陣列))' –

+0

@TomYates:爲什麼轉換爲'list'? 'zip(* array)'相當於沒有不必要的轉換(儘管你需要將'zip''tuple's轉換回'str'。 – ShadowRanger

回答

3

可以做一個簡單的使用的zip和拆包:

strs = ["AAA", "BBB", "CCC"] 
print zip(*strs) 

輸出將是元組,雖然:

[( 'A', 'B', 'C'), ( 'A', 'B', 'C'),( 'A', 'B', 'C')]


對於字符串可以使用:

strs = ["AAA", "BBB", "CCC"] 
print map(''.join, zip(*strs)) 
# for python 3 use: list(map(''.join, zip(*strs))) # thanks @cesar 

輸出現在是字符串的列表:

[ 'ABC', 'ABC', 'ABC']

''.join用於映射元組爲字符串。

+1

如果你使用的是python3,map函數會返回一個map對象,所以如果你需要一個列表你shuld通話清單(地圖(''。加入,郵編(* strs))) – Cesar

2
a = ["AAA", "BBB", "CCC"] 
print ([''.join(i) for i in zip(*a)]) 
0

所以這個假設您正在處理您的示例中的字符串,但你可以擴展算法來處理任何數據類型,你遇到的邏輯將保持不變。

listRows = ["AAA", "BBB", "CCC"] 
transList = [] 
tempString = '' 
for s in range(0,len(listRows)): 
    for i in range(0, len(listRows)): 
     tempString = tempString + listRows[i][s] 
    transList.append(tempString) 
    tempString = '' 
print(transList) 

哪裏transList是最終的列表中選擇所需

+0

Woah @Reut Sharabani和Abhishek,我不知道郵政編碼和地圖,這些都是整潔!!如果我有足夠的代表我會投票你們兩個哈哈! – BLang