我有3个不同长度的列表
a = [945,625,800,146,12,84]
b = [0,1,4,249,84.3,87,98,128,872,973,674,1238,897]
c = [24,36,84,23]
我想通过以下标准创建 3个元素的组合 :
输出不 元素在同一索引。
ex- a [0],b [0],c [0]或(945,0,24)无效。
3位数组合应该有一位数字,一个两位数字 和一个三位数的数字。
因此,(945,0,23)有效,而(945,128,24)不正确。
如何为消除包含所有偶数或所有奇数的组合设置一些标准? 因此,(146,1,23)和(800,4,84)都不正确。
如何组合楼层和天花板标准?例如 - 最大数量不能超过最小数量的100倍。
因此(800,4,23)不正确,因为800超过最小数字的100倍,即4
答案 0 :(得分:0)
也许您可以尝试使用product
获取列表中的笛卡尔积,然后编写四个过滤函数来执行此操作:
a = [945, 625, 800, 146, 12, 84]
b = [0, 1, 4, 249, 84.3, 87, 98, 128, 872, 973, 674, 1238, 897]
c = [24, 36, 84, 23]
from itertools import product
c1 = lambda x: x not in zip(a, b, c)
c2 = lambda x: {len(str(i)) for i in x}=={1,2,3}
c3 = lambda x: not (all(i % 2 == 0 for i in x) or all(i % 2 != 0 for i in x))
c4 = lambda x: max(x) < 100 * min(x)
r1 = filter(c1,product(a,b,c))
r2 = filter(c2,r1)
r3 = filter(c3,r2)
r4 = filter(c4,r3)
print(r4)
所以预期的输出是:
(146, 4, 23)