美文网首页Python
Python的基础知识之常用类型-集合

Python的基础知识之常用类型-集合

作者: 摸着石头过河_崖边树 | 来源:发表于2020-03-01 20:43 被阅读0次

每种语言都有基本的数据类型,比如整型、浮点型、字符串、列表等,但是小编今天主要记录列表数据类型。


tmpdir__17_9_7_15_06_52.gif

集合(set/frozenset)

集合的特点:无序的,不可随机访问,不可重复(很重要);
可以有交集 并集 补集。

集合的分类:集合分为可变的集合(set)、不可以变集合(frozenset)
可变的集合才会有 增删改查,不可变集合没有;

类型中列表、字典、字符串都是可变集合, 元祖是不可变集合

1. 集合的定义

方法一:直接写大括号

   s = {435, 45, 5}
   print(s, type(s))

方法二:set(Iterable,可迭代对象)

s = set([34, 56, 7])
print(s, type(s))
s1 = frozenset((1, 3, 5))
s1 = frozenset([1, 3, 5])
s1 = frozenset({'name': 'lzb', 'age': 18})

方法三:集合推导式

s = set(x * x for x in range(0, 4))
s = frozenset(x * x for x in range(0, 6))
print(s, type(s))
2. 集合的去重

集合新增的数必须是可哈希的(不可变的)

list1 = [1, 3, 4, 5, 6, 2, 1]
set1 = set(list1)
result = list(set1)
print(result)
3. 单一集合的操作增、删、改、查

3.1 新增

s = {1, 2, 3}
s.add(4)

3.2 删除

# remove  没有这个元素  报错
print(s.remove(12))

# discard    没有这个元素  不报错 返回 None
print(s.discard(12))

# pop   随机删除一个元素  空集合删除会报错
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())

 # clear  清空集合  返回 None
 print(s.clear())

3.3 集合的查询,集合不可以修改

# 集合的遍历 方式一 for in 
for v in s:
    print(v)

# 集合的遍历 方式二 迭代器
its = iter(s)
print(next(its))
print(next(its))
print(next(its))
4. 集合之间的操作交集 并集 补集

4.1 intersection(Iterable) 求交集 可变与不可变交集时候 以intersection左侧为基准

# intersection_update 求交集  只有不可变才有  会修改调用者
s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6}
result = s1.intersection(s2)
print(result, type(result))

s1 = frozenset([1, 2, 3, 4, 5])
s2 = {4, 5, 6}
result = s2 & s1
print(result, type(result))

s1 = frozenset([1, 2, 3, 4, 5])
s2 = {4, 5, 6}
s2.intersection_update(s1)
print(s2, type(s2))

s1 = {1, 2, 3, 4, 5}
print(s1.intersection([1, 2, 3]))

4.2 union(Iterable) 求并集

 # update 求交集  只有不可变才有  会修改调用者
s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6}
print(s1.union(s2))

s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6}
print(s1 | s2)

4.3 difference(Iterable) 求补集 差集

 # difference_update  求补集 差集  只有不可变才有  会修改调用者
s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6}
print(s1.difference(s2))

s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6}
print(s1 - s2)

4.4 判断 判断集合是否包含

# isdisjoint 是否不相交
s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6}
print(s1.isdisjoint(s2))

# issuperset 是否全包含  s1 包含 s2
s1 = {1, 2, 3, 4, 5}
s2 = {4, 5}
print(s1.issuperset(s2))

# issuperset 是否全包含  s2 是 s1 的子集
s1 = {1, 2, 3, 4, 5}
s2 = {4, 5}
print(s2.issubset(s1))
最后赠言

学无止境,学习Python的伙伴可以多多交流

相关文章

网友评论

    本文标题:Python的基础知识之常用类型-集合

    本文链接:https://www.haomeiwen.com/subject/vyjkkhtx.html