Python:分割多维列表

1 投票
2 回答
7531 浏览
提问于 2025-04-17 18:36

我有一个列表,格式是这样的:

[(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')]

unicode转换成字符串也会有帮助!

另外,在另一个情况下,我有一个列表,格式是:

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

我需要输入成这样的格式:

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

有什么建议吗?

2 个回答

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]
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)]

它首先把每个项目展开,然后再转置这个列表。

撰写回答