2013-03-10 3 views
1

У меня есть список в видеPython: Расщепление многомерных списки

[(u'a1', u'b1'), 
(u'a1', u'b2'), 
(u'c1', u'c2')] 

Я хочу это два разделить на два списка/столбцы, как

list1   list2  
[(u'a1',  [(u'b1'), 
(u'a1',  (u'b2'), 
(u'c1')]  (u'c2')] 

Преобразования Юникода в строку будет также помогите!

Кроме того, в другом случае, у меня есть список в виде

[(('a', 'c'), -3), (('a', 'd'), -7), (('c', 'd'), -4)] 

мне нужен вход в виде

('a','a','c') 
('c','d','d') 
(-3,-7,-4) 

Любые советы?

+0

Ваше форматирование путается, и ваши круглые скобки не закрыты, и они не образуют кортежи, где они есть. –

ответ

3

Второй пример:

>>> L = [(('a', 'c'), -3), (('a', 'd'), -7), (('c', 'd'), -4)] 
>>> zip(*[(a[0], a[1], b) for a, b in L]) 
[('a', 'a', 'c'), ('c', 'd', 'd'), (-3, -7, -4)] 

Это первая уплощается каждый пункт, а затем переставляет список.

+0

Просто отлично! Благодаря! – Zero

5

Вы можете создать два новых списка с помощью списков понимание:

x=[(u'a1', u'b1'), 
(u'a1', u'b2'), 
(u'c1', u'c2')] 

list1 = [i[0] for i in x] 

list2 = [i[1] for i in x] 
+0

Взрыв на! получилось что-нибудь с '[(('a', 'c'), -3), (('a', 'd'), -7), (('c', 'd'), -4)] 'in '(' a ',' a ',' c ') (' c ',' d ',' d ') (-3, -7, -4)' case? – Zero

+0

@ J.F. Себастьян просто добавил хороший ответ для этого. –