加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

可能有嵌套列表/元组的Python操作(交集,联合,重复)?

发布时间:2020-12-20 13:35:34 所属栏目:Python 来源:网络整理
导读:案件: a = [(1,2),(2,3),(4,5),(1,6),7)]b = [(5,(6,8),9)] 如何通过第一个元组项删除重复项? 结果将是: [(1,5)] b的结果是: [(5,9)] 如何在没有重复的情况下合并两者?: 结果将是: [(1,(5,3)] 我怎样才能得到两者的交集?: 结果将是: [(1,5)] 这是
案件:

a = [(1,2),(2,3),(4,5),(1,6),7)]
b = [(5,(6,8),9)]

如何通过第一个元组项删除重复项?

结果将是:

[(1,5)]

b的结果是:

[(5,9)]

如何在没有重复的情况下合并两者?:
结果将是:

[(1,(5,3)]

我怎样才能得到两者的交集?:
结果将是:

[(1,5)]

这是一种简单的方法吗?

最好的祝福
克里斯

解决方法

使用集:

>>> seen = set()
>>> s1 = [x for x in a if x[0] not in seen and not seen.add(x[0])]
>>> seen = set()
>>> s2 = [x for x in b if x[0] not in seen and not seen.add(x[0])]
>>> s1
[(1,5)]
>>> s2
[(5,9)]

联盟:

>>> from itertools import chain
>>> seen = set()
>>> [x for x in chain(s1,s2) if x[0] not in seen and not seen.add(x[0])]
[(1,3)]

路口:

>>> se1 = set(x[0] for x in s1)
>>> se2 = set(x[0] for x in s2)
>>> inter = se1 & se2
>>> inter
set([1,4])
>>> seen = set()
>>> [x for x in chain(s1,s2) if x[0] in inter and x[0] not in seen
                                                          and not seen.add(x[0])]
[(1,5)]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读