You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对嵌套列表元素进行通用的按位AND/OR/多数投票运算?

通用元素级运算解决方案

针对任意数量子列表的嵌套列表,我们可以通过转置列表的方式,将每个索引位置的元素打包成元组,再对每个元组执行对应运算。以下是具体实现:

1. 元素级AND运算

利用all()函数判断元组内所有元素是否为1(非0),转换为整数得到结果:

a = [[1, 1, 1, 0, 0, 0],
     [1, 1, 1, 0, 1, 1], 
     [1, 0, 0, 1, 0, 0]]

def elementwise_and(lists):
    return [int(all(items)) for items in zip(*lists)]

# 输出:[1, 0, 0, 0, 0, 0]
print(elementwise_and(a))

2. 元素级OR运算

利用any()函数判断元组内是否存在至少一个1,转换为整数得到结果:

def elementwise_or(lists):
    return [int(any(items)) for items in zip(*lists)]

# 输出:[1, 1, 1, 1, 1, 1]
print(elementwise_or(a))

3. 多数投票运算

统计每个元组中1的数量,若超过总数的一半则返回1,否则返回0:

def majority_vote(lists):
    result = []
    for items in zip(*lists):
        count_ones = sum(items)
        total_elements = len(items)
        # 可根据需求调整多数判定规则(比如>=半数)
        result.append(1 if count_ones > total_elements / 2 else 0)
    return result

# 输出:[1, 1, 1, 0, 0, 0]
print(majority_vote(a))

核心原理

zip(*lists)会将嵌套列表转置,把原列表中每个子列表的同索引元素打包成元组。例如原列表的3个子列表,转置后会生成6个元组,每个元组包含对应索引位置的3个元素。这种方式天然支持任意数量的子列表,无需针对固定数量做特殊处理。

内容的提问来源于stack exchange,提问作者Shehzad Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:30:44