【使用集合运算检测列表之间的关系】

今天在看数据预处理方法时看到了利用集合操作来检测列表中是否包含另一列表中的某个元素的方法,特此记录。
代码如下:

a = [1, 2, 3, 4, 5]
b = [0, 1, 0]
if set(a)&set(b):
  print("a包含b中的元素")
else:
  print("a不包含b的任何元素")

也可以使用for 循环写成这样

a = [1, 2, 3, 4, 5]
b = [0, 4, 5]
d = [1 for c in b if c in a]#a包含b的任意元素d就不为空
if d:
  print("a包含b中的元素")
else:
  print("a不包含b的任何元素")

但是看起来简单写起来麻烦,逻辑上还很容易出错。而用集合运算来判明列表间的关系则非常清晰。如要检测a列表中是否包含b列表中的全部元素可以表示为:

a = [1, 2, 3, 4, 5]
b = [0, 1, 0]
if set(a)>=set(b):
  print("a包含b中的所有元素")
else:
  print("a不包含b的所有元素")

此外集合还可以用于列表元素的去重:

s2 = set([1, 2, 3, 1, 2, 3, 4, 5, 6, 6, 5])
print(s2)  # {1, 2, 3, 4, 5, 6}  自动去重
s3 = set('hello world')
print(s3)  # {'w', 'h', 'r', 'e', 'd', 'o', 'l', ' '} 自动去重,且无序

总结:

set()常用于列表的关系测试和去重。

refercences:
https://blog.csdn.net/u011367482/article/details/124313813

https://blog.csdn.net/weixin_44368270/article/details/121171541

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值