社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

压缩元组的python列表理解

kur ag • 5 年前 • 567 次点击  

我有两张单子。

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
 
567 次点击  
文章 [ 1 ]  |  最新文章 5 年前
sanyash
Reply   •   1 楼
sanyash    6 年前
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')]]