Py学习  »  Python

压缩元组的python列表理解

kur ag • 4 年前 • 393 次点击  

我有两张单子。

list_1 = [[1, 0, 0, 1], [0, 2, 0, 0]]
list_2 = [(1,'A'), (2,'B'), (3,'C'), (4,'D')]

我要生成一个新列表,列表3。

[[(1, 'A'), (4, 'D')], [(2, 'B'), (2, 'B')]]

我想用列表理解。

list_3 = [[list_2[index]*val for index, val in enumerate(elem) if val > 0] for elem in list_1]

但它产生了:

[[(1, 'A'), (4, 'D')], [(2, 'B', 2, 'B')]]

你可以看到,在第二项元组是解包的。如何保持元组?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54630
 
393 次点击  
文章 [ 1 ]  |  最新文章 4 年前
sanyash
Reply   •   1 楼
sanyash    4 年前
list_1 = [[1, 0, 0, 1], [0, 2, 0, 0]]
list_2 = [(1,'A'), (2,'B'), (3,'C'), (4,'D')]
list_3 = [
    [
        item
        for index, val in enumerate(elem) if val > 0
        for item in [list_2[index]] * val
    ]
    for elem in list_1
]
print(list_3)
# [[(1, 'A'), (4, 'D')], [(2, 'B'), (2, 'B')]]