weixin_39017744 2019-10-13 19:34 采纳率: 83.3%
浏览 805
已采纳

请问如何用python做两个数组逐位判断?

比如有以下数组:
a1: 1,0,0,1,0,0,0,1
a2: 0,0,0,0,1,1,1,1
a3: 0,1,0,1,0,1,0,0
a4: 1,0,1,1,1,1,0,0
a5: .......
抓取三个数组进行判断,
if ((a1第一位or a2第一位 or a3第一位=1 )and (a1第二位 or a2 第二位 or a3第二位=1)and....
直到判断完所有位数为止,所有位都有了1的话就输出当前这三个数组,已输出的数组不参与之后的判断。

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-10-13 21:10
    关注

    不知道抓取3个数组是任意3个,比如123 124 125 134 135 235...,还是顺序联系的3个,123 456 789这样抓。
    我是按照前者写的,如果不是,请说明

    # -*- coding: UTF-8 -*-
    from itertools import combinations
    
    a1=[ 1,0,0,1,0,0,0,1]
    a2=[ 0,0,0,0,1,1,1,1]
    a3=[ 0,1,0,1,0,1,0,0]
    a4=[ 1,0,1,1,1,1,0,0]
    a5=[ 1,1,1,1,1,1,1,0]
    a6=[ 0,0,0,0,0,0,0,1]
    a=[a1,a2,a3,a4,a5,a6]
    
    al = list(combinations(a,3))
    for i in al:
        flag = True
        for j in range(len(i[0])):
            if (i[0][j] + i[1][j] + i[2][j] == 0):
                flag = False
                break
        if flag:
            print(i)    
    
    

    ([1, 0, 0, 1, 0, 0, 0, 1], [0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0])
    ([1, 0, 0, 1, 0, 0, 0, 1], [0, 1, 0, 1, 0, 1, 0, 0], [1, 1, 1, 1, 1, 1, 1, 0])
    ([1, 0, 0, 1, 0, 0, 0, 1], [1, 0, 1, 1, 1, 1, 0, 0], [1, 1, 1, 1, 1, 1, 1, 0])
    ([1, 0, 0, 1, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1])
    ([0, 0, 0, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1, 0, 0], [1, 0, 1, 1, 1, 1, 0, 0])
    ([0, 0, 0, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1, 0, 0], [1, 1, 1, 1, 1, 1, 1, 0])
    ([0, 0, 0, 0, 1, 1, 1, 1], [1, 0, 1, 1, 1, 1, 0, 0], [1, 1, 1, 1, 1, 1, 1, 0])
    ([0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1])
    ([0, 1, 0, 1, 0, 1, 0, 0], [1, 1, 1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1])
    ([1, 0, 1, 1, 1, 1, 0, 0], [1, 1, 1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1])


    只使用1次

    # -*- coding: UTF-8 -*-
    from itertools import combinations
    
    a1=[ 1,0,0,1,0,0,0,1]
    a2=[ 0,0,0,0,1,1,1,1]
    a3=[ 0,1,0,1,0,1,0,0]
    a4=[ 1,0,1,1,1,1,0,0]
    a5=[ 1,1,1,1,1,1,1,0]
    a6=[ 0,0,0,0,0,0,0,1]
    a=[a1,a2,a3,a4,a5,a6]
    al = list(combinations(list(i for i in range(0, 6)),3))
    used = []
    for i in al:
        flag = False
        if not(i[0] in used or i[1] in used or i[2] in used):
            flag = True
            for j in range(7):
                if (a[i[0]][j] + a[i[1]][j] + a[i[2]][j] == 0):
                    flag = False
                    break
        if flag:
            used.append(i[0])
            used.append(i[1])
            used.append(i[2])
            print(' '.join(map(str, a[i[0]])) + "; " + ' '.join(map(str, a[i[1]])) + "; " + ' '.join(map(str, a[i[2]])))
    
    

    1 0 0 1 0 0 0 1; 0 0 0 0 1 1 1 1; 1 1 1 1 1 1 1 0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 制裁名单20240508芯片厂商
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致