栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将Python列表列表根据重叠项分组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将Python列表列表根据重叠项分组

您是根据集合进行分组,因此请使用集合来检测新的分组:

def grouper(sequence):    group, members = [], set()    for item in sequence:        if group and members.isdisjoint(item): # new group, yield and start new yield group group, members = [], set()        group.append(item)        members.update(item)    yield group

这给出:

>>> for group in grouper(paths):...     print group... [['D', 'B', 'A', 'H'], ['D', 'B', 'A', 'C'], ['H', 'A', 'C']][['E', 'G', 'I'], ['F', 'G', 'I']]

或者您可以将其再次投射到列表中:

output = list(grouper(paths))

这假定组是连续的。如果您有不相交的组,则需要处理整个列表并遍历到目前为止为每个项目构造的所有组:

def grouper(sequence):    result = []  # will hold (members, group) tuples    for item in sequence:        for members, group in result: if members.intersection(item):  # overlap     members.update(item)     group.append(item)     break        else:  # no group found, add new result.append((set(item), [item]))    return [group for members, group in result]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573588.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号