2024-04-20 12:06:10 发布
网友
我想基于我的掩码创建一个更小的列表:例如list [1, 2, 3]和mask:[1, 0, 1]应该给我[1, 3]。在
[1, 2, 3]
[1, 0, 1]
[1, 3]
我写了以下函数:
def reducing(arr, mask): out = [] for i in range(len(mask)): if mask[i]: out.append(arr[i]) return out
这是可行的,但我认为可以用reduce函数(总而言之,我正在缩减列表:-))或理解它来简化它。有人能帮忙吗?在
您可以使用^{},如下所示
>>> from itertools import compress >>> list(compress([1, 2, 3], [1, 0, 1])) [1, 3]
否则,可以使用列表理解过滤它们,如下所示
>>> [item for item, mask in zip([1, 2, 3], [1, 0, 1]) if mask] [1, 3]
更简单的是,不使用zip,您可以基于索引跳过这些项,如下所示
zip
>>> data, mask = [1, 2, 3], [1, 0, 1] >>> [item for index, item in enumerate(data) if mask[index]] [1, 3]
或者你可以使用简单的索引循环,像这样
>>> [data[index] for index in range(len(data)) if mask[index]] [1, 3]
您可以使用^{} ,如下所示
否则,可以使用列表理解过滤它们,如下所示
更简单的是,不使用
zip
,您可以基于索引跳过这些项,如下所示或者你可以使用简单的索引循环,像这样
相关问题 更多 >
编程相关推荐