闲话Python编程-集合set

        Python语言提供了集合类型set,set里存储的元素无序而不重复,这是它区别于list和tuple的地方。

1. 创建

        有两种创建方式:{a, b, c}和set()函数。

        注意: 空集合set只能通过set()函数来创建,不能通过{}来创建,因为Python把{}当成空字典dictionary了。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 练习set


def create_set():
    s = set()
    print(s)

    s1 = {'aaa', 'bbb', 'cccc', 'cccc'}
    print(s1)

    s2 = set('abcabc')
    print(s2)


def main():
    create_set()


if __name__ == '__main__':
    main()

        执行结果:

set()
{'cccc', 'aaa', 'bbb'}
{'c', 'b', 'a'}

        再执行一次:

set()
{'bbb', 'cccc', 'aaa'}
{'a', 'b', 'c'} 

         从两次打印结果来看,我们很容易就看到了元素的无序性和不重复性。

2. 操作

        直接写一段测试代码看它有哪些操作。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 练习set


def create_set():
    s = set()
    print(s)

    s1 = {'aaa', 'bbb', 'cccc', 'cccc'}
    print(s1)

    s2 = set('abcabc')
    print(s2)

    s3 = {x for x in 'abcqwe' if x not in 'abc'}
    print(s3)


def operate_set():
    s1 = set('abcdefgabc')
    print('s1:', s1)
    print('s1 length: ', len(s1)) # 求长度

    if 'a' in s1:
        print('a is in ', s1)
    if 'x' not in s1:
        print('x is not in ', s1)

    s2 = set('abcxyz')
    print(s2)
    print(s1 - s2) # 在s1内,但不在s2内
    print(s1 | s2) # s1和s2合集
    print(s1 & s2) # s1和s2交集
    print(s1 ^ s2) # 不在两者里都出现的

    s3 = {1, 2, 3, 4, 5}
    s3.add(6) # 添加一个元素
    print('s3:', s3)
    s3.remove(2) # 删除指定的元素, 如果不存在会抛出异常
    print('s3:', s3)
    s3.discard(9) # 删除指定的元素, 如果不存在不会抛出异常
    print('s3:', s3)
    s3.pop() # 随机删除一个元素并返回这个元素值
    print('s3:', s3)
    s3.clear() # 清空整个set
    print('s3:', s3)


def main():
    create_set()
    print('-------------------------------------------------')
    operate_set()


if __name__ == '__main__':
    main()

3. 结束语

         集合set没有列表list和字典dictionary使用的频繁,它适合使用在集合里元素不重复的情况下,每个数据结构有它最合适的使用场景,这促使我们在实际编程过程中根据实际问题来寻找恰当的数据结构。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值