zoukankan      html  css  js  c++  java
  • 我的Python入门笔记(10)

    七章、集合


    Although practicality beats purity.——The Zen of Python


      Python中的集合同数学中的集合概念类似,也是用于保存不重复元素的。它分为可变集合(set)不可变集合(frozenset)两种。在形式上,集合的所有元素都要放在一对大括号“{}”,两个相邻的元素使用逗号分隔。集合的最好应用就是去重,因为集合中的每个元素都是唯一的。

      一、集合的创建

      在Python中提供了两种方法创建集合:一种是使用“{ }”创建;另一种是通过set()函数将列表元组等可迭代对象转换为集合。

      1.使用“{ }”创建集合

      在Python中,创建set集合也可以像列表、元组和字典一样,直接将集合赋值给变量从而实现创建集合,即直接使用大括号创建,其语法格式如下:

      setname={elsment1,element2,......,element n}

      setname:集合的名称,可以是任何符合Python命名规则的标识符;

      element:表示集合中的元素,个数没有限制,并且只要是Python支持的数据类型就可以。

      在创建集合是,如果输入重复的元素,Python会自动保留一个。

    1 set1={"名刀观世正宗",'月之光芒','流光星陨刀','黑刀暗月'}
    2 set2={1,2,15,8,4,6,2}
    3 set3={'Python',("人生苦短,我用Python")}
    4 print(type(set1),set1,set2,set3)
    5 输出:
    6 <class 'set'> {'流光星陨刀', '月之光芒', '名刀观世正宗', '黑刀暗月'} {1, 2, 4, 6, 8, 15} {'人生苦短,我用Python', 'Python'}

      由于Python中集合是无序的,所以每次输出元素时的排列顺序都可能与上面不同.

      2.使用set()函数创建

      在Python中,可以使用Set()函数将列表、元组等其他可迭代对象转换为集合。set()函数语法格式如下:

      setname=set(iteration)

      setname:集合的名称

      iteration:表示要转换为集合的可迭代对象,可以是列表、元组、range对象,此外也可以说是字符串,如果是字符串,返回的集合将是包含全部不重复字符的集合。

    1 set1=set("名刀观世正宗、月之光芒、流光星陨刀、黑刀暗月")
    2 set2=set([3.1415,2356,220,284])
    3 set3=set(("人生苦短","我用Python"))
    4 print(set1,set2,set3)
    5 输出:
    6 {'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''} {220, 3.1415, 2356, 284} {'人生苦短', '我用Python'}

      在创建空集合时,只能使用set()函数实现,而不能使用一对大括号实现,这是因为在Python中,直接使用一对大括号,表示创建一个空字典。

    二、集合的添加和删除

      集合是可变序列,所以在创建集合后,还可以对其添加或者删除元素。

      1.向集合中添加元素

      向集合中添加元素可以使用add()方法实现,语法格式如下:

      setname.add(element)

      setname:表示要添加元素的集合;

      element:表示要添加元素的内容。这里只能使用字符串、数字及布尔类型的True或者False,不能使用列表、元组等可迭代对象。

    1 set1=set("名刀观世正宗、月之光芒、流光星陨刀、黑刀暗月")
    2 set1.add("月光色,女子香")
    3 print(set1)
    4 输出:
    5 {'', '', '', '', '', '', '', '', '', '', '', '', '', '月光色,女子香', '', '', ''}

      2.从集合中删除元素

      在Python中,可以使用del命令删除整个集合,也可以使用集合的pop()或者remove()方法删除一个元素,或者使用集合对象的clear()方法清空集合,即删除集合中的所有元素,使其变为空集合。

     1 set1=set("名刀观世正宗、月之光芒、流光星陨刀、黑刀暗月")
     2 set1.add("月光色,女子香")
     3 set1.remove("月光色,女子香")
     4 print("使用remove()方法移除一个指定元素后:",set1)
     5 set1.pop()
     6 print("使用pop()方法移除最后一个元素:",set1)
     7 set1.clear()
     8 print("使用clear()方法清空指定集合后:",set1)
     9 输出:
    10 使用remove()方法移除一个指定元素后: {'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''}
    11 使用pop()方法移除最后一个元素: {'', '', '', '', '', '', '', '', '', '', '', '', '', '', ''}
    12 使用clear()方法清空指定集合后: set()

      使用集合的remove()方法时,如果指定的内容不存在,则会抛出异常,所以在移除指定元素之前,最好先判断其是否存在。

    三、集合的交集、并集和差集运算

      集合最常用的操作就是进行交集、并集和差集运算。交集运算使用“&”符号,并集运算使用“|”符号,差集运算使用“-”符号,具体示例如下:

     1 set1=set(['名刀观世正宗','月之光芒','流光星陨刀','黑刀暗月'])
     2 print('DNF中的太刀武器:',set1,'
    ')
     3 set2=set(['月之光芒','妖刀村正'])
     4 print('我喜欢的武器:',set2)
     5 print('交集运算:',set1 & set2)
     6 print('并集运算:',set1 | set2)
     7 print('差集运算:',set1 - set2)
     8 输出:
     9 DNF中的太刀武器: {'名刀观世正宗', '月之光芒', '黑刀暗月', '流光星陨刀'} 
    10 
    11 我喜欢的武器: {'月之光芒', '妖刀村正'}
    12 交集运算: {'月之光芒'}
    13 并集运算: {'月之光芒', '妖刀村正', '流光星陨刀', '名刀观世正宗', '黑刀暗月'}
    14 差集运算: {'名刀观世正宗', '黑刀暗月', '流光星陨刀'}

    四、列表、元组、字典和集合的区别

    列表、元组、字典和集合的区别

    数据结构 是否可变 是否重复 是否有序 定义符号
    列表 可变 可重复 无序 []
    元组 不可变 可重复 有序 ()
    字典 可变 可重复 无序 {key:value}
    集合 可变 不可重复 无序 {}

     

  • 相关阅读:
    Docker镜像仓库的搭建--> Harbor篇
    K8S入门系列之扩展组件 --> Dashboard (五)
    K8S入门系列之必备扩展组件--> coredns(四)
    K8S入门系列之集群二进制部署--> node篇(三)
    K8S入门系列之集群二进制部署--> master篇(二)
    K8S入门系列之集群yum安装-->初试篇(一)
    zabbix 4.2 的安装和设置(mysql57----centos7)
    SVN--服务端安装和设置---centos7
    Docker(二) Dockerfile 使用介绍
    二叉搜索树JavaScript实现
  • 原文地址:https://www.cnblogs.com/1210x1184/p/11107943.html
Copyright © 2011-2022 走看看