集合

作者: Pope_Li | 来源:发表于2018-09-18 14:31 被阅读0次

集合

集合可以包含多个元素,用逗号隔开,同dict字典一样,也是一组key的集合,但是不储存value,

而且key不能重复.

集合的元素遵循三个原则:

        1.每个元素必须是不可变类型的

    2.没有重复的元素

    3.无序

补充: 可变类型是不可哈希的类型,不可变类型是可哈希的类型

注意:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结集合中单个值.

要创建一个set,需要提供一个list作为输入集合

s = set([1,2,3,4,4,5])
s = {1,2,3,4,5}

注意:重复元素在set中自动被过滤了,在后边还会单独介绍去重的方法,和set()去重的原理

add()

通过add()方法可以把元素添加到set中,可以重复添加,但是不会有效果.

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

remove()

集合通过remove()方法,移除集合中的元素.

>>> s.remove(4)
>>> s
{1, 2, 3}

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

集合的其他操作

交集。(&  或者 intersection)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2)  # {4, 5}
print(set1.intersection(set2))  # {4, 5}
 
并集。(| 或者 union
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7}
 
print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7}
 
差集。(- 或者 difference)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2)  # {1, 2, 3}
print(set1.difference(set2))  # {1, 2, 3}
 
反交集。 (^ 或者 symmetric_difference)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}
 
子集与超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
 
print(set1 < set2)
print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
 
print(set2 > set1)
print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。
 
frozenset不可变集合,让集合变成不可变类型
s = frozenset('barry')
print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

深浅copy

浅copy()

第一层在内层中是独立的,第二次开始记更深的层次开始可以更改

li = [1,2,3]
l2 = li.copy()
li.append(666)
print(l2)

深copy

两个是完全独立的,互不影响.

面试题

# l1 = [1,2,3,[22,33]]
# l2 = l1[:]
# l1.append(66)
# # l1[-1].append(66)
# print(l2)
# import copy
# l1 =[1,2,3,[22,]]
# l2 = copy.deepcopy(l1)
# # print(l1,l2)
# l1[-1].append('TOM')
# print(l2)
# set1 = set({1,2,'baarry'})
# set2 = {1,2,'barry'}
# print(set1,set2)
# set1 = {'A','B','C','D','barry'}
# set1.update('A')
# print(set1)
# set1.update('老师')
# print(set1)
# set1.update([1,2,3])
# print(set1)

相关文章

  • 我的Swift的学习总结 -->第二周

    集合 集合:Set,定义一个集合可以写成:var 集合名 : Set<集合类型> = [集合元素],具体的集合应用...

  • markdown 测试

    集合 集合 集合 引用

  • kotlin学习第五天:集合,高阶函数,Lambda表达式

    集合 list集合 list集合分为可变集合与不可变集合。由list of创建的集合为不可变集合,不能扩容,不能修...

  • kotlin练习 ---- 集合练习

    kotlin练习 - 集合练习 Set集合 Set集合创建 Set集合的使用 List集合 List集合创建 Li...

  • 集合总结

    集合 集合分为单列集合和双列集合两种: 一.单列集合: Collection是单列集合的顶级接口: 其中有三类集合...

  • 映射、元组、集合

    映射 元组 集合 集合之seq 集合之set 集合之map

  • 16.Collection集合

    主要内容: Collection 集合 迭代器 增强for List 集合 Set 集合 1,集合 集合是java...

  • 集合与有序集合

    集合分为有序集合 (zset) 和无序集合 (set), 一般无序集合也直接说成集合 无序集合 (set) 无序集...

  • python入坑第八天|集合

    好的,各位蛇友,我们今天来学习集合。 内容: 集合的创建 集合操作符号 集合的内置函数 集合的创建 集合用set(...

  • 集合框架

    集合框架的概念 集合:存放数据的容器 集合框架:java中,用于表示集合,以及操作集合的类和接口的统称 数组与集合...

网友评论

    本文标题:集合

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