在python中展开列表

2024-09-27 02:27:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张这样的单子:

[[(video1,4)], [(video2,5),(video3,8)], [(video1,5)], [(video5, 7), (video6,9)]...]

此列表中的每个项都可能包含一个数据对或元组,我希望将此列表更改为

[(video1,4),(video2,5),(video3,8),(video1,5),(video5,7),(video6,9)...]

然后执行以下操作:

for item in list:
    reqs = reqs + item[1]
    b.append(item[0])
c = set(b)

我不知道如何更改列表结构,或者如何在原始列表的基础上进行相同的计算?


Tags: 数据in列表foritemreqslist单子
3条回答

要展平一个级别,可以使用itertools.chain.from_iterable()

flattened_list = itertools.chain.from_iterable(my_list)

如果您只想将列表展平,只需使用itertools.chain.from_iterablehttp://docs.python.org/library/itertools.html#itertools.chain.from_iterable

有一种非常简单的方法来理解列表。此示例已在python文档here中记录

>>> # flatten a list using a listcomp with two 'for'
>>> vec = [[1,2,3], [4,5,6], [7,8,9]]
>>> [num for elem in vec for num in elem]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

这是您想要实现的解决方案。根据你的例子,这是最简单的解决方案

In [59]: your_list = [[('video1',4)], [('video2',5),('video3',8)], [('video1',5)], [('video5', 7), ('video6',9)]]

In [60]: improved_list = [num for elem in your_list for num in elem]

In [61]: improved_list
Out[61]: 
[('video1', 4),
 ('video2', 5),
 ('video3', 8),
 ('video1', 5),
 ('video5', 7),
 ('video6', 9)]

相关问题 更多 >

    热门问题