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