Python 如何自动分离元组列表

Python 如何自动分离元组列表,python,Python,我有这样一份清单: a = [(a, b), (c, i), (d, i), (e, b), (f, b), (g, i)] a = [[(a, b), (c, i), (d, i)], [(e, b)], [(f, b), (g ,i)]] 我想分离元素b存在的元组列表。结果应该是这样的: a = [(a, b), (c, i), (d, i), (e, b), (f, b), (g, i)] a = [[(a, b), (c, i), (d, i)], [(e, b)], [(f, b

我有这样一份清单:

a = [(a, b), (c, i), (d, i), (e, b), (f, b), (g, i)]
a = [[(a, b), (c, i), (d, i)], [(e, b)], [(f, b), (g ,i)]]
我想分离元素
b
存在的元组列表。结果应该是这样的:

a = [(a, b), (c, i), (d, i), (e, b), (f, b), (g, i)]
a = [[(a, b), (c, i), (d, i)], [(e, b)], [(f, b), (g ,i)]]
有什么方法可以做到这一点吗?

这里有一个例子:

def group_b(arr):
    b_in_group = False
    grouped = []
    group = []
    for tup in arr:
        if "b" in tup:
            if not b_in_group:
                group.append(tup)
                b_in_group = True
            else:
                if group:
                    grouped.append(group)

                group = [tup]
        else:
            group.append(tup)

    grouped.append(group)

    return grouped

print (group_b([("a", "b"), ("c", "i"), ("d", "i"), ("e", "b"), ("f", "b"), ("g", "i")]))

如果您以列表的形式开始输出,其中只有一个子列表,那么您知道插入点始终是列表中的最后一个子列表。无论何时看到测试数据,都要附加一个新的空列表

a = 'a'
b = 'b'
c = 'c'
d = 'd'
e = 'e'
f = 'f'
g = 'g'
h = 'h'
i = 'i'

# input list
in_list = [(a,b),(c,i),(d,i),(e,b),(f,b),(g,i)]

# output
out = [[]]

for tpl in in_list:
    if b in tpl:
        # if existing list has data, push empty list on end
        if out[-1]:
            out.append([])
    out[-1].append(tpl)

print(out)

您的输出是否与您的输入不相同?不,不,这是一个错误,对不起,不清楚输出与输入的关系。如果第一个元组不包含元素b,该怎么办?如果第一个元组中没有a
b
,是否应该丢弃它?应该
[(a,a),(a,b)]
[(a,a)],[(a,b)]还是
[(a,b)]