alpha = [[[1, True], [2, False], [3, True]], [[4, False], [5, True], [6,False]]]
我想创建另一个嵌套列表(测试版),但仅使用每个列表的前几个元素,即:整数。
[条件是:我希望beta仅在其相邻的布尔元素为True时才包含alpha中的元素。如果为假,我想将“ o”存储在其相应位置。
我在寻找什么:
beta = [[[1, "o", 3], [["o", 5 "o"]]
可以使用list comprehension和if expressions来实现:
beta = [[(i if condition else 'o') for i, condition in a_elem] for a_elem in alpha]
i, condition
部分是列表解压缩,类似于here
列表理解将在这里很好地工作。
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
的变量传递给内部理解。