带条件和多准则的Python组合

2024-09-28 22:11:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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个元素组成的组合

  1. 输出应该而不是具有相同索引的元素。在

    ex-a[0]、b[0]、c[0]或(945,0,24)无效

  2. 一个3位数的组合应该有一个一个一位数,一个两位数 和一个三位数的数字。在

    因此,(945,0,23)有效,而(945128,24)不正确。

  3. 如何设置一些标准来消除包含所有偶数或所有奇数的组合? 因此,(146,1,23)和(800,4,84)都是不正确的

  4. 如何将地板和天花板标准组合放置在一起?例如,最大数量不能超过最小数量的100倍。在

    因此,(800,4,23)是不正确的,因为800是最小值的100多倍,即4


Tags: 元素列表标准数量数字ex奇数偶数
1条回答
网友
1楼 · 发布于 2024-09-28 22:11:35

也许您可以尝试使用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)

因此,预期产出为:

^{pr2}$

相关问题 更多 >