python中对象包含几个部分_python中包含对象类型的两个列表的交集

如果顺序无关紧要,请使用set.intersection:A = [(1.1,2.2),(3.3,4.4),(5.5,6.6)]

B = [(1.1,2.2),(7.7,8.8),(3.3,4.4)]

print(set(A).intersection(B))

set([(3.3, 4.4), (1.1, 2.2)])

或者将B设为集合,并在a上迭代保持公共元素:

^{pr2}$

如果要查找具有相同属性值的对象:A = [Point(1.1,2.2),Point(3.3,4.4),Point(5.5,6.6)]

B = [Point(1.1,2.2),Point(7.7,8.8),Point(3.3,4.4)]

st = set((p.a,p.b) for p in B)

print([p for p in A if (p.a,p.b) in st])

或者在类中创建哈希方法:class Point(object):

def __init__(self, a_, b_):

self.a = a_

self.b = b_

def __hash__(self):

return hash((self.a, self.b))

def __eq__(self, other):

return self.a, self.b == other.a,other.b

def __ne__(self, other):

return not self.__eq__(other)

A = [Point(1.1,2.2),Point(3.3,4.4),Point(5.5,6.6)]

B = [Point(1.1,2.2),Point(7.7,8.8),Point(3.3,4.4)]

print(set(A).intersection(B))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值