gpt4 book ai didi

python - 使用条件参数创建组合并删除值

转载 作者:行者123 更新时间:2023-12-04 10:28:39 24 4
gpt4 key购买 nike

我正在使用 Python 进行组合。假设我有以下列表:

List = ['AW','BW','CW','DW','EW','FW','GW','HW']

我正在为任何 3 个创建组合,如下所示:
Perm =combinations( List,3)
Com = []
for i in list(Perm):
#print (i)
Com.append(i)

我得到了以下 56 种组合的输出:

enter image description here

我想删除具有以下条件的组合:
  • 两者 List [0]List [1]包含在一个组合中(即我希望这两个组合中只有一个包含在一个组合中。)
  • 两者 List [2]List [3]包含在一个组合中(即我希望这两个组合中只有一个包含在一个组合中。)
  • 两者 List [4]List [5]包含在一个组合中(即我希望这两个组合中只有一个包含在一个组合中。)

  • 这意味着列表的两个后续组件 () 中只有一个包含在组合中。

    我附上了图片并突出显示了要删除的组合作为示例。

    enter image description here

    我怎样才能做到这一点?

    最佳答案

    在我写的时候思考......你有一组约束,你只想要 (0,1), (2,3), (3,4) 中的一个......我们假设列表的长度是偶数并且您实际上不想包含违反 (0,1) 约束的第一个项目。像这样的事情应该可以解决问题:

    import itertools

    test_list = ['AW', 'BW', 'CW', 'DW', 'EW', 'FW', 'GW', 'HW']

    # Your combinations can be obtained with itertools.combinations(test_list, 3)


    def get_constraints(a, b, *rest):
    return [(a, b), *(get_constraints(*rest) if rest else [])]


    def constrained(combination_list, constraints):
    for constraint in constraints:
    if all((constraint_name in combination_list) for constraint_name in constraint):
    return True
    return False


    def constrained_combinations(name_list):
    combinations = itertools.combinations(name_list, 3)
    constraints = get_constraints(*name_list)
    return [combination for combination in combinations if not constrained(combination, constraints)]

    constrained_combinations(test_list) ->
    [('AW', 'CW', 'EW'),
    ('AW', 'CW', 'FW'),
    ('AW', 'CW', 'GW'),
    ('AW', 'CW', 'HW'),
    ('AW', 'DW', 'EW'),
    ('AW', 'DW', 'FW'),
    ('AW', 'DW', 'GW'),
    ('AW', 'DW', 'HW'),
    ('AW', 'EW', 'GW'),
    ('AW', 'EW', 'HW'),
    ('AW', 'FW', 'GW'),
    ('AW', 'FW', 'HW'),
    ('BW', 'CW', 'EW'),
    ('BW', 'CW', 'FW'),
    ('BW', 'CW', 'GW'),
    ('BW', 'CW', 'HW'),
    ('BW', 'DW', 'EW'),
    ('BW', 'DW', 'FW'),
    ('BW', 'DW', 'GW'),
    ('BW', 'DW', 'HW'),
    ('BW', 'EW', 'GW'),
    ('BW', 'EW', 'HW'),
    ('BW', 'FW', 'GW'),
    ('BW', 'FW', 'HW'),
    ('CW', 'EW', 'GW'),
    ('CW', 'EW', 'HW'),
    ('CW', 'FW', 'GW'),
    ('CW', 'FW', 'HW'),
    ('DW', 'EW', 'GW'),
    ('DW', 'EW', 'HW'),
    ('DW', 'FW', 'GW'),
    ('DW', 'FW', 'HW')]

    关于python - 使用条件参数创建组合并删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60519571/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com