Python 判断列表的包含关系

Python 判断列表子集
在Python中,要判断一个列表是否是另一个列表的子集,可以遍历并比较每个元素。通过创建长度与目标子集相等的子列表,并检查它是否与目标子集相等,使用`any()`函数可以简化这一过程。当找到匹配项时,即可确定子集关系。

有两个列表,在python里如何判定其中一个是另一个的子集?比如

>>> A = [2, 3, 4]
>>> B = [0, 1, 2, 3, 4, 5]
>>> A in B
False

因为列表B中的元素都是数字,并没有如A一样的list,所以得到False的结果。其实,两个列表的包含关系,可以用for逐个判定

>>> A = [2, 3, 4]
>>> B = [0, 1, 2, 3, 4, 5]
>>> any([A==B[i:i+len(A)] for i in range(0,len(B)-len(A)+1)])
True

分析
首先从B的第i个元素开始,提取长度与A等长的子列表,记作C:

B[i:i+len(A)]

C只需要滑过整个B即可,所以i的范围不需要到整个B的长度,只需要到len(B)-len(A)+1,滑动的过程中,逐次比较C是否与A相等,得到True或者False的结果,放入结果列表,比如上面的例子里,这个结果是

[False, False, True, False]

当i为2时,C与A相等。只要有一次匹配相等,就可以判定A是B的子集。用any函数可以实现这种逻辑:只要列表元素至少有一个为就返回True.

>>> any([False, False, True, False])
True

原文链接:http://www.lfhacks.com/tech/python-inclusion-list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值