2013-08-30 11 views
1

Мне нужно получить каждую строку списка и создать новый список. Позволь мне объяснить.Python - Как получить первую строку каждого списка?

У меня есть это:

data = [[204.0, u'stock'], [204.0, u'stock']] 

мне нужно преобразовать в этом:

column1 = [204.0, 204.0] 
colunm2 = [u'stock', u'stock'] 

Любые подсказки о том, как это может быть сделано?

С наилучшими пожеланиями,

ответ

5

Использование zip():

>>> data = [[204.0, u'stock'], [204.0, u'stock']] 
>>> zip(*data) 
[(204.0, 204.0), (u'stock', u'stock')] 
>>> column1, column2 = zip(*data) 
>>> column1 
(204.0, 204.0) 
>>> column2 
(u'stock', u'stock') 

Или izip() из itertools:

>>> from itertools import izip 
>>> column1, column2 = izip(*data) 
>>> column1 
(204.0, 204.0) 
>>> column2 
(u'stock', u'stock') 
2

Простой список понимание будет делать трюк.

data = [[204.0, u'stock'], [204.0, u'stock']] 

column1 = [i[0] for i in data] 
column2 = [i[1] for i in data] 

>>> column1 
[204.0, 204.0] 
>>> column2 
['stock', 'stock'] 
0

может быть, в одной строке

>>> data = [[204.0, u'stock'], [204.0, u'stock']] 
>>> columns = [ [d[k] for d in data] for k in range(2)] 
[[204.0, 204.0], ['stock', 'stock']] 
>>> columns[0] 
[204.0, 204.0] 

и если размер переменной может измениться вы можете сделать это:

columns = [ [d[k] for d in data] for k in range(max(map(len,data)))] 
Смежные вопросы