2013-03-10 49 views
1

我在的Python:拆分多维名单

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

形式的列表,我希望它一分为二成两个列表/列像

转换的Unicode
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

你的格式化让事情变得混乱,你的括号不会关闭,也不会形成元组。 – 2013-03-10 18:19:57

回答

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 2013-03-10 18:29:29

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

邦上! ('','c'),-3),((''','d'),-7),(('c','d'),-4)] ('''','a','c') ('c','d','d') (-3,-7,-4)'case? – Zero 2013-03-10 18:25:25

+0

@ J.F。塞巴斯蒂安刚刚为此添加了一个不错的答案。 – 2013-03-10 18:26:44