2016-09-22 65 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