• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

jwang106


脚踏实地,日拱一卒。 建立新的神经链接,可不像公园散步那样简单。
  • 博客园
  • 联系
  • 管理

View Post

python入门 集合(四)



集合

集合是一个无序的不重复元素序列,可以迭代,也可以修改。集合迭代的时候元素是随机的。

集合通常用来 membership testing, 去重, 也可以用来求交集并集补集。

介绍一下如何创建集合和集合常见的用法。

创建集合

	>>> s1 = set()
	>>> print(s1)
	set()
	
	>>> l1 = [1, 2, 3, 4, 5, 4, 3]
	>>> s2 = set(l1)
	>>> print(s2)
	{1, 2, 3, 4, 5}
	#可以看到集合可以用来去重
	
	>>> s3 = set('jwang')
	>>> print(s3)
	{'n', 'w', 'j', 'g', 'a'}
	# 可以看到集合迭代的时候元素是随机的
	
	>>> s4 = set(["C", “C++”, “Python”])
	>>> print(s4)
	{'C', 'Python', 'C++'}

修改集合

  1. 添加 add

    	>>> print(s2)
    	{1, 2, 3, 4, 5}
    	>>> s2.add(6)
    	>>> print(s2)
    	{1, 2, 3, 4, 5, 6}
    	>>> s2.add((7,8))
    	>>> print(s2)
    	{1, 2, 3, 4, 5, 6, (7, 8)}
    
  2. 更新:通过传入一个列表来更新 update(list)

  	>>> print(s2)
  	{1, 2, 3, 4, 5, 6, (7, 8)}
  	>>> s2.update([6, 0])
  	>>> s2
  	{0, 1, 2, 3, 4, 5, 6, (7, 8)}
  	>>> s2.update([7, 8, 9], [10, 11])
  	>>> s2
  	{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, (7, 8)}
  	>>> 

更新:通过传入一个集合来更新 update(set)

  >>> s2.update({100, 200})
  >>> s2
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
  1. 删除 remove(val) discard(val)

    不同点是remove在元素不存在时会报错,discard什么也不做。

      >>> s2.remove(0)
      >>> s2
    	{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
      >>> s2.discard(0)
      >>> s2.remove(0)
    	Traceback (most recent call last):
    	  File "<stdin>", line 1, in <module>
    	KeyError: 0
    

一些其他方法

	# copy 浅复制
	>>> s3 = s2.copy()
	>>> s3
	{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
	# clear 清空
	>>> s3.clear()
	>>> s3
	set()
	# set pop(),随机删除一个元素,并返回
	>>> s = set([1, 2, 3])
	>>> s.pop()
	1
	>>> s
	{2, 3}

集合间操作

  1. 交集

    >>> s2 = set([1, 2, 3, 4, 5, 10, 15, 22])
    >>> s1 = set([1, 2, 3, 4, 5, 6, 7, 8])
    >>> s1 & s2
    {1, 2, 3, 4, 5}
    >>> s1.intersection(s2)
    {1, 2, 3, 4, 5}
    
  2. 求集合的不同

    >>> s1.difference(s2)
    {8, 6, 7}
    >>> s2.difference(s1)
    {10, 22, 15}
    
  3. 是不是子集

    >>> s3 = set([6, 7, 8])
    >>> s2.issubset(s2)
    True
    >>> s2.issubset(s1)
    False
    >>> s1.issuperset(s3)
    True
    



posted on 2019-01-21 23:54  jwang106  阅读(105)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3