使用条件更改嵌套列表

问题描述 投票:1回答:2
alpha = [[[1, True], [2, False], [3, True]], [[4, False], [5, True], [6,False]]]

我想创建另一个嵌套列表(测试版),但仅使用每个列表的前几个元素,即:整数。

[条件是:我希望beta仅在其相邻的布尔元素为True时才包含alpha中的元素。如果为假,我想将“ o”存储在其相应位置。

我在寻找什么:

beta = [[[1, "o", 3], [["o", 5 "o"]]
python-3.x nested-lists
2个回答
2
投票

可以使用list comprehensionif expressions来实现:

beta = [[(i if condition else 'o') for i, condition in a_elem] for a_elem in alpha]

i, condition部分是列表解压缩,类似于here


0
投票

列表理解将在这里很好地工作。

beta = [[integer if boolean else 'o' for integer, boolean in item] for item in alpha])

这是复杂的代码行,因此我们可以对其进行分解。内部列表理解为[integer if boolean else 'o' for integer, boolean in item]。理解for integer, boolean in item的第二部分用于解压缩列表。它需要item,稍后您将看到我们所说的嵌套列表,然后将整数解压缩为变量integer,并将布尔值解压缩为变量boolean。然后,它使用条件语句integer if boolean else 'o'。扩展后,该语句为:

if boolean:
    return integer
else:
    return 'o'

外部列表理解只是[<inner comprehension> for item in alpha]。它通过alpha并将发现的内容作为名为item的变量传递给内部理解。

© www.soinside.com 2019 - 2024. All rights reserved.