比如有以下数组:
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的话就输出当前这三个数组,已输出的数组不参与之后的判断。

请问如何用python做两个数组逐位判断?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报