27 集合:在我的世界里,你就是唯一

一、集合是字典的表亲:

>>> num = {}
>>> type(num)
<class 'dict'>

>>> num2 = {1, 2, 3, 4}
>>> type(num2)
<class 'set'>

【解释】大括号并不是字典的特权。
               在Python里,如果用大括号括起一堆没有映射关系的数字时,这一堆数字就是集合(‘set’)。


二、集合的特点

(一)唯一性:里面的数只能出现一次:

>>> num1 = {1, 2, 2, 3, 4, 3, 3, 5, 4}
>>> num1
{1, 2, 3, 4, 5}

(二)不支持索引(‘index’):

                集合和字典一样,都是无序的,不支持index。

>>> num1 = {1, 2, 3, 4, 5}
>>> num1[1]
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    num1[1]
TypeError: 'set' object does not support indexing

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    num1[1]
TypeError: 'set' object does not support indexing


三、如何创建集合(两种方法)

(一)直接把一堆元素用大括号括起来
(二)使用工厂函数  __set()

>>> set1 = set([1, 2, 2, 3, 4])
>>> set1
{1, 2, 3, 4}

>>> set1 = set('I love you')
>>> set1
{'e', ' ', 'v', 'o', 'y', 'l', 'I', 'u'}

>>> set1 = set(['I love you'])
>>> set1
{'I love you'}

课堂搞搞看:去除列表中重复的元素:[1, 2, 3, 4, 5, 5, 3, 1, 0]

      ##非集合方式:

>>> num = [1, 2, 3, 4, 5, 5, 3, 1, 0]
>>> temp = []
>>> for each in num:  #对于在num内的元素
    if each not in temp:  # 如果没在temp里,
        temp.append(each)  # 就给我进来吧!!
>>> temp
[1, 2, 3, 4, 5, 0]

      ##集合方式:

>>> num = [1, 2, 3, 4, 5, 5, 3, 1, 0]
>>> num = list(set(num))  #把num转为集合(去除重复元素),再转为列表
>>> num
[0, 1, 2, 3, 4, 5]

'''但是再次变成列表时,会重新排序。
如果你的程序需要原有顺序的时候,就需要警惕这种办法!!'''

四、访问访问集合中的值

(一)for __读取集合中所有数据。
(二)in 和 not in __判断一个元素是否在集合中已经存在。


五、内置函数(具体函数看网站)

网站所在

(一)add()  __添加元素
(二)remove() __移除元素

>>> num = {0, 1, 2, 3, 4, 5}
>>> num.add(6)
>>> num
{0, 1, 2, 3, 4, 5, 6}
>>> num.remove(1)
>>> num
{0, 2, 3, 4, 5, 6}

六、不可变集合  __frozenset()

>>> num = frozenset((1, 2, 3, 4, 5))
>>> num
frozenset({1, 2, 3, 4, 5})

>>> num.add(0)
Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    num.add(0)
AttributeError: 'frozenset' object has no attribute 'add'

        Traceback (most recent call last):
          File "<pyshell#34>", line 1, in <module>
            num.add(0)
        AttributeError: 'frozenset' object has no attribute 'add'

【不可添加!!】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值