2016-09-22 2 views
-2

Итак, моя проблема, я хочу перенести мой список строк в столбцы , например:Python, список строк, строк на столбцы

[ "AAA", "BBB", "CCC"] => [«ABC», «ABC», «ABC»]

не может найти эффективный способ сделать это.

+0

'почтовый индекс (* (список (I) для I в массиве))' –

+0

@TomYates: Почему конвертировать в 'list'? 'zip (* array)' эквивалентен без лишних конверсий (хотя вам нужно преобразовать 'zip'' tuple 'обратно 'в' 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 (''. join, zip (* 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, я не знал о zip и карте, это аккуратно !!, если бы у меня было достаточно репутации, я бы Вверх Голосуй за тебя, ха-ха !!! – BLang

Смежные вопросы