简体   繁体   English

列表理解与打包元组

[英]list comprehension with packed tuples

I have two lists. 我有两个清单。

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

I want to generate a new list, list_3. 我想生成一个新列表list_3。

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

I wanted to use list comprehension. 我想使用列表理解。

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

But it generated: 但它产生了:

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

You can see that in the second term tuple is unpacked. 你可以看到,在第二个词中,元组被解压缩。 How can keep tuple? 如何保持元组?

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM