学习python(四)——列表(list)、元组(tuple)、字典(dict)和集合(set)

目录

 

0.序列

1.列表(list)

(1)创建和删除列表

(2)序列添加元素

(3)列表删除元素

(4)列表修改元素

(5)列表查找元素

2.元组

3.字典

(1)添加键值对

(2)修改键值对

(3)删除键值对

(4)判断字典中是否存在指定键值对

(5)keys()、values() 和 items() 方法

4.集合

(1)向 set 集合中添加元素

(2)从set集合中删除元素


0.序列

所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。序列中,每个元素都有属于自己的编号(索引)。从起始元素开始,索引值从 0 开始递增,如下图所示。

Python 还支持索引值是负数,此类索引是从右向左计数,换句话说,从最后一个元素开始计数,从索引值 -1 开始。

注意,在使用负值作为列序中各元素的索引值时,是从 -1 开始,而不是从 0 开始。



切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。序列实现切片操作的语法格式如下:sname[start : end : step]

其中,各个参数的含义分别是:

  • sname:表示序列的名称;
  • start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为 0,也就是从序列的开头进行切片;
  • end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;
  • step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果 step 的值大于 1,则在进行切片去序列元素时,会“跳跃式”的取元素。如果省略设置 step 的值,则最后一个冒号就可以省略。

Python 中,支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。Python 中,使用数字 n 乘以一个序列会生成新的序列,其内容为原来序列被重复 n 次的结果。Python 中,可以使用 in 关键字检查某元素是否为序列的成员,其语法格式为:value in sequence其中,value 表示要检查的元素,sequence 表示指定的序列。not in 关键字,它用来检查某个元素是否不包含在指定的序列中。

Python提供了几个内置函数,可用于实现与序列相关的一些常用操作。

函数功能
len()计算序列的长度,即返回序列中包含多少个元素。
max()找出序列中的最大元素。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+ 运算符可以连接两个序列),还是做加和操作。
min()找出序列中的最小元素。
list()将序列转换为列表。
str()将序列转换为字符串。
sum()计算元素和。
sorted()对元素进行排序。
reversed()反向序列中的元素。
enumerate()将序列组合为一个索引序列,多用在 for 循环中。

1.列表(list)

在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。说到这里,一些读者可能听说过数组(Array),它就可以把多个数据挨个存储到一起,通过数组下标可以访问数组中的每个元素。需要明确的是,Python 中没有数组,但是加入了更加强大的列表。从形式上看,列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,如下所示:[element1, element2, element3, ..., elementn]。格式中,element1 ~ elementn 表示列表中的元素,个数没有限制,只要是 Python 支持的数据类型就可以。从内容上看,列表可以存储整数、小数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。另外,在其它 Python 教程中,经常用 list 代指列表,这是因为列表的数据类型就是 list,通过 type() 函数就可以知道。

(1)创建和删除列表

在 Python 中,创建列表的方法可分为两种。1) 使用 [ ] 直接创建列表:使用[ ]创建列表后,一般使用=将它赋值给某个变量,具体格式如下:listname = [element1 , element2 , element3 , ... , elementn]。其中,listname 表示变量名,element1 ~ elementn 表示列表元素。另外,使用此方式创建列表时,列表中元素可以有多个,也可以一个都没有。2) 使用 list() 函数创建列表:除了使用[ ]创建列表外,Python 还提供了一个内置的函数 list(),使用它可以将其它数据类型转换为列表类型。

列表是 Python 序列的一种,我们可以使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是一个新的子列表)。使用索引访问列表元素的格式为:listname[i]。其中,listname 表示列表名字,i 表示索引值。列表的索引可以是正数,也可以是负数。使用切片访问列表元素的格式为:listname[start : end : step]。其中,listname 表示列表名字,start 表示起始索引,end 表示结束索引,step 表示步长。

对于已经创建的列表,如果不再使用,可以使用del关键字将其删除。实际开发中并不经常使用 del 来删除列表,因为 Python 自带的垃圾回收机制会自动销毁无用的列表,即使开发者不手动删除,Python 也会自动将其回收。del 关键字的语法格式为:del listname。其中,listname 表示要删除列表的名称。

(2)序列添加元素

使用+运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用+进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。+更多的是用来拼接列表,而且执行效率并不高,如果想在列表中插入元素,应该使用下面几个专门的方法。

(1)append() 方法:用于在列表的末尾追加元素,该方法的语法格式如下:listname.append(obj)。其中,listname 表示要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。ppend() 方法传递列表或者元组时,此方法会将它们视为一个整体,作为一个元素添加到列表中,从而形成包含列表和元组的新列表。

(2)extend() 方法:extend() 和 append() 的不同之处在于:extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中。extend() 方法的语法格式如下:listname.extend(obj)。其中,listname 指的是要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等,但不能是单个的数字。

(3) insert() 方法:append() 和 extend() 方法只能在列表末尾插入元素,如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法。insert() 的语法格式如下:listname.insert(index , obj)。其中,index 表示指定位置的索引值。insert() 会将 obj 插入到 listname 列表第 index 个元素的位置。当插入列表或者元祖时,insert() 也会将它们视为一个整体,作为一个元素插入到列表中,这一点和 append() 是一样的。

例如:

language =["C++","JAVA","Python"]
print("language is",language)
language.append("C#")
print("language is",language)
language.extend("PHP")
print("language is",language)
language.insert(2,"Ruby");
print("language is",language)

输出为:

(3)列表删除元素

(1)del 是 Python 中的关键字,专门用来执行删除操作,它不仅可以删除整个列表,还可以删除列表中的某些元素。我们已经在《Python列表》中讲解了如何删除整个列表,所以本节只讲解如何删除列表元素。del 可以删除列表中的单个元素,格式为:del listname[index]。其中,listname 表示列表名称,index 表示元素的索引值。del 也可以删除中间一段连续的元素,格式为:del listname[start : end]。其中,start 表示起始索引,end 表示结束索引。del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素。

(2)Python pop() 方法用来删除列表中指定索引处的元素,具体格式如下:listname.pop(index)。其中,listname 表示列表名称,index 表示索引值。如果不写 index 参数,默认会删除列表中的最后一个元素,类似于数据结构中的“出栈”操作。

(3)remove():根据元素值进行删除,除了 del 关键字,Python 还提供了 remove() 方法,该方法会根据元素本身的值来进行删除操作。需要注意的是,remove() 方法只会删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。

(4)Python clear() 用来删除列表的所有元素,也即清空列表。

(4)列表修改元素

(1)修改单个元素非常简单,直接对元素赋值即可。使用索引得到列表元素后,通过=赋值就改变了元素的值。

(2)Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。使用切片语法赋值时,Python 不支持单个值。但是如果使用字符串赋值,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素。使用切片语法时也可以指定步长(step 参数),但这个时候就要求所赋值的新元素的个数与原有元素的个数相同。

(5)列表查找元素

index() 方法用来查找某个元素在列表中出现的位置(也就是索引),如果该元素不存在,则会导致 ValueError 错误,所以在查找之前最好使用 count() 方法判断一下。index() 的语法格式为:listname.index(obj, start, end)。其中,listname 表示列表名称,obj 表示要查找的元素,start 表示起始位置,end 表示结束位置。index() 方法会返回元素所在列表中的索引值。

count() 方法用来统计某个元素在列表中出现的次数,基本语法格式为:listname.count(obj)。其中,listname 代表列表名,obj 表示要统计的元素。如果 count() 返回 0,就表示列表中不存在该元素,所以 count() 也可以用来判断列表中的某个元素是否存在。

2.元组

元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。元组和列表(list)的不同之处在于:列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列。元组也可以看做是不可变的列表,通常情况下,元组用于保存无需修改的内容。从形式上看,元组的所有元素都放在一对小括号( )中,相邻元素之间用逗号,分隔,如下所示:(element1, element2, ... , elementn)。其中,element1~elementn 表示元组中的各个元素,个数没有限制,只要是 Python 支持的数据类型就可以。从存储内容上看,元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同。在这个元组中,有多种类型的数据,包括整形、字符串、列表、元组。元组是 tuple 类型,这也是很多教程中用 tuple 指代元组的原因。

Python 提供了两种创建元组的方法:(1)使用 ( ) 直接创建:通过( )创建元组后,一般使用=将它赋值给某个变量,具体格式为:tuplename = (element1, element2, ..., elementn)。其中,tuplename 表示变量名,element1 ~ elementn 表示元组的元素。在 Python 中,元组通常都是使用一对小括号将所有元素包围起来的,但小括号不是必须的,只要将各元素用逗号隔开,Python 就会将其视为元组。需要注意的一点是,当创建的元组中只有一个字符串类型的元素时,该元素后面必须要加一个逗号(,,否则 Python 解释器会将它视为字符串。(2)函数 tuple():除了使用( )创建元组外,Python 还提供了一个内置的函数 tuple(),用来将其它数据类型转换为元组类型。uple() 的语法格式如下:tuple(data)。其中,data 表示可以转化为元组的数据,包括字符串、元组、range 对象等。

和列表一样,我们可以使用索引(Index)访问元组中的某个元素(得到的是一个元素的值),也可以使用切片访问元组中的一组元素(得到的是一个新的子元组)。使用索引访问元组元素的格式为:

tuplename[i]。其中,tuplename 表示元组名字,i 表示索引值。元组的索引可以是正数,也可以是负数。使用切片访问元组元素的格式为:tuplename[start : end : step]。其中,start 表示起始索引,end 表示结束索引,step 表示步长。

元组是不可变序列,元组中的元素不能被修改,所以我们只能创建一个新的元组去替代旧的元组。当创建的元组不再使用时,可以通过 del 关键字将其删除。

3.字典

Python 字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。字典类型是 Python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素。字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。

主要特征解释
通过键而不是通过索引来读取元素字典类型有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。
字典是任意数据类型的无序集合和列表、元组不同,通常会将索引值 0 对应的元素称为第一个元素,而字典中的元素是无序的。
字典是可变的,并且可以任意嵌套字典可以在原处增长或者缩短(无需生成一个副本),并且它支持任意深度的嵌套,即字典存储的值也可以是列表或其它的字典。
字典中的键必须唯一字典中,不支持同一个键出现多次,否则只会保留最后一个键值对。
字典中的键必须不可变字典中每个键值对的键是不可变的,只能使用数字、字符串或者元组,不能使用列表。

Python 中的字典类型相当于 Java 或者 C++ 中的 Map 对象。和列表、元组一样,字典也有它自己的类型。Python 中,字典的数据类型为 dict,通过 type() 函数即可查看:

创建字典的方式有很多:(1) 使用 { } 创建字典:由于字典中每个元素都包含两部分,分别是键(key)和值(value),因此在创建字典时,键和值之间使用冒号:分隔,相邻元素之间使用逗号,分隔,所有元素放在大括号{ }中。使用{ }创建字典的语法格式如下:dictname = {'key':'value1', 'key2':'value2', ..., 'keyn':valuen}。其中 dictname 表示字典变量名,keyn : valuen 表示各个元素的键值对。需要注意的是,同一字典中的各个键必须唯一,不能重复。(2)通过 fromkeys() 方法创建字典:Python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建带有默认值的字典,具体格式为:dictname = dict.fromkeys(list,value=None)。其中,list 参数表示字典中所有键的列表(list);value 参数表示默认值,如果不写,则为空值 None。(3) 通过 dict() 映射函数创建字典:通过 dict() 函数创建字典的写法有多种,下表罗列出了常用的几种方式,它们创建的都是同一个字典 :

创建格式注意事项
a = dict(str1=value1, str2=value2, str3=value3)str 表示字符串类型的键,value 表示键对应的值。使用此方式创建字典时,字符串不能带引号。
#方式1
demo = [('two',2), ('one',1), ('three',3)]
#方式2
demo = [['two',2], ['one',1], ['three',3]]
#方式3
demo = (('two',2), ('one',1), ('three',3))
#方式4
demo = (['two',2], ['one',1], ['three',3])
a = dict(demo)
向 dict() 函数传入列表或元组,而它们中的元素又各自是包含 2 个元素的列表或元组,其中第一个元素作为键,第二个元素作为值。
keys = ['one', 'two', 'three'] #还可以是字符串或元组
values = [1, 2, 3] #还可以是字符串或元组
a = dict( zip(keys, values) )
通过应用 dict() 函数和 zip() 函数,可将前两个列表转换为对应的字典。

注意,无论采用以上哪种方式创建字典,字典中各元素的键都只能是字符串、元组或数字,不能是列表。列表是可变的,不能作为键。

列表和元组是通过下标来访问元素的,而字典不同,它通过键来访问对应的值。因为字典中的元素是无序的,每个元素的位置都不固定,所以字典也不能像列表和元组那样,采用切片的方式一次性访问多个元素。Python 访问字典元素的具体格式为:dictname[key]。其中,dictname 表示字典变量的名字,key 表示键名。注意,键必须是存在的,否则会抛出异常。除了上面这种方式外,Python 更推荐使用 dict 类型提供的 get() 方法来获取指定键对应的值。当指定的键不存在时,get() 方法不会抛出异常。get() 方法的语法格式为:dictname.get(key[,default])。其中,dictname 表示字典变量的名字;key 表示指定的键;default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手动指定,会返回 None。

和删除列表、元组一样,手动删除字典也可以使用 del 关键字。

(1)添加键值对

为字典添加新的键值对很简单,直接给不存在的 key 赋值即可,具体语法格式如下:dictname[key] = value。对各个部分的说明:dictname 表示字典名称,key 表示新的键,value 表示新的值,只要是 Python 支持的数据类型都可以。

(2)修改键值对

Python 字典中键(key)的名字不能被修改,我们只能修改值(value)。字典中各元素的键必须是唯一的,因此,如果新添加元素的键与已存在元素的键相同,那么键所对应的值就会被新的值替换掉,以此达到修改元素值的目的。

(3)删除键值对

如果要删除字典中的键值对,还是可以使用 del 语句.

(4)判断字典中是否存在指定键值对

如果要判断字典中是否存在指定键值对,首先应判断字典中是否有对应的键。判断字典是否包含指定键值对的键,可以使用 in 或 not in 运算符。需要指出的是,对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的。

通过 in(或 not in)运算符,我们可以很轻易地判断出现有字典中是否包含某个键,如果存在,由于通过键可以很轻易的获取对应的值,因此很容易就能判断出字典中是否有指定的键值对。

(5)keys()、values() 和 items() 方法

  • keys() 方法用于返回字典中的所有键(key);

  • values() 方法用于返回字典中所有键对应的值(value);

  • items() 用于返回字典中所有的键值对(key-value)。

可以发现,keys()、values() 和 items() 返回值的类型分别为 dict_keys、dict_values 和 dict_items。需要注意的是,在 Python 2.x 中,上面三个方法的返回值都是列表(list)类型。但在 Python 3.x 中,它们的返回值并不是我们常见的列表或者元组类型,因为 Python 3.x 不希望用户直接操作这几个方法的返回值。

在 Python 3.x 中如果想使用这三个方法返回的数据,一般有两种方案:(1) 使用 list() 函数,将它们返回的数据转换成列表。(2) 使用 for in 循环遍历它们的返回值。

copy() 方法返回一个字典的拷贝,也即返回一个具有相同键值对的新字典。copy() 方法所遵循的拷贝原理,既有深拷贝,也有浅拷贝。进行深拷贝,也就是说,它会再申请一块内存用来存放。而对于某些列表类型的值来说,此方法对其做的是浅拷贝,也就是说,值不是自己独有,而是共有。

update() 方法可以使用一个字典所包含的键值对来更新己有的字典。在执行 update() 方法时,如果被更新的字典中己包含对应的键值对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的键值对,则该键值对被添加进去。

pop() 和 popitem() 都用来删除字典中的键值对,不同的是,pop() 用来删除指定的键值对,而 popitem() 用来随机删除一个键值对,它们的语法格式如下:dictname.pop(key);dictname.popitem()。其中,dictname 表示字典名称,key 表示键。其实,说 popitem() 随机删除字典中的一个键值对是不准确的,虽然字典是一种无须的列表,但键值对在底层也是有存储顺序的,popitem() 总是弹出底层中的最后一个 key-value,这和列表的 pop() 方法类似,都实现了数据结构中“出栈”的操作。

setdefault() 方法用来返回某个 key 对应的 value,其语法格式如下:dictname.setdefault(key, defaultvalue)。当指定的 key 不存在时,setdefault() 会先为这个不存在的 key 设置一个默认的 defaultvalue,然后再返回 defaultvalue。也就是说,setdefault() 方法总能返回指定 key 对应的 value:如果该 key 存在,那么直接返回该 key 对应的 value;如果该 key 不存在,那么先为该 key 设置默认的 defaultvalue,然后再返回该 key 对应的 defaultvalue。说明,dictname 表示字典名称,key 表示键,defaultvalue 表示默认值(可以不写,不写的话是 None)。

4.集合

Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:{element1,element2,...,elementn}。其中,elementn 表示集合中的元素,个数没有限制。从内容上看,同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出 TypeError 错误。

Python 提供了 2 种创建 set 集合的方法,分别是使用 {} 创建和使用 set() 函数将列表、元组等类型数据转换为集合。(1) 使用 {} 创建:在 Python 中,创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,从而实现创建集合的目的,其语法格式如下:setname = {element1,element2,...,elementn}。其中,setname 表示集合的名称,起名时既要符合 Python 命名规范,也要避免与 Python 内置函数重名。(2) set()函数创建集合:set() 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。该函数的语法格式如下:setname = set(iteration)。其中,iteration 就表示字符串、列表、元组、range 对象等数据。注意,如果要创建空集合,只能使用 set() 函数实现。因为直接使用一对 {},Python 解释器会将其视为一个空字典。

由于集合中的元素是无序的,因此无法向列表那样使用下标访问元素。Python 中,访问集合元素最常用的方法是使用循环结构,将集合中的数据逐一读取出来。

和其他序列类型一样,手动函数集合类型,也可以使用 del() 语句。

Python set 集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算。

(1)向 set 集合中添加元素

set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现,该方法的语法格式为:setname.add(element)。其中,setname 表示要添加元素的集合,element 表示要添加的元素内容。需要注意的是,使用 add() 方法添加的元素,只能是数字、字符串、元组或者布尔类型(True 和 False)值,不能添加列表、字典、集合这类可变的数据,否则 Python 解释器会报 TypeError 错误。

(2)从set集合中删除元素

删除现有 set 集合中的指定元素,可以使用 remove() 方法,该方法的语法格式如下:setname.remove(element)。使用此方法删除集合中元素,需要注意的是,如果被删除元素本就不包含在集合中,则此方法会抛出 KeyError 错误。

如果我们不想在删除失败时令解释器提示 KeyError 错误,还可以使用 discard() 方法,此方法和 remove() 方法的用法完全相同,唯一的区别就是,当删除集合中元素失败时,此方法不会抛出任何错误。

运算操作Python运算符含义
交集&取两集合公共的元素
并集|取两集合全部的元素
差集-取一个集合中另一集合没有的元素
对称差集^取集合 A 和 B 中不属于 A&B 的元素

各个方法的具体语法结构及功能如表 1所示。

方法名语法格式功能
add()set1.add()向 set1 集合中添加数字、字符串、元组或者布尔类型
clear()set1.clear()清空 set1 集合中所有元素
copy()set2 = set1.copy()拷贝 set1 集合给 set2
difference() set3 = set1.difference(set2)将 set1 中有而 set2 没有的元素给 set3
difference_update()set1.difference_update(set2)从 set1 中删除与 set2 相同的元素
discard()set1.discard(elem)删除 set1 中的 elem 元素
intersection()set3 = set1.intersection(set2)取 set1 和 set2 的交集给 set3
intersection_update()set1.intersection_update(set2)取 set1和 set2 的交集,并更新给 set1
isdisjoint()set1.isdisjoint(set2)判断 set1 和 set2 是否没有交集,有交集返回 False;没有交集返回 True
issubset()set1.issubset(set2)判断 set1 是否是 set2 的子集
issuperset()set1.issuperset(set2)判断 set2 是否是 set1 的子集
pop()a = set1.pop()取 set1 中一个元素,并赋值给 a
remove()set1.remove(elem)移除 set1 中的 elem 元素
symmetric_difference()set3 = set1.symmetric_difference(set2)取 set1 和 set2 中互不相同的元素,给 set3
symmetric_difference_update()set1.symmetric_difference_update(set2)取 set1 和 set2 中互不相同的元素,并更新给 set1
union()set3 = set1.union(set2)取 set1 和 set2 的并集,赋给 set3
update()set1.update(elem)添加列表或集合中的元素到 set1

set 集合是可变序列,程序可以改变序列中的元素;frozenset 集合是不可变序列,程序不能改变序列中的元素。set 集合中所有能改变集合本身的方法,比如 remove()、discard()、add() 等,frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。

 frozenset 集合支持的方法:'copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union'。frozenset 集合的这些方法和 set 集合中同名方法的功能是一样的。两种情况下可以使用 fronzenset:当集合的元素不需要改变时,我们可以使用 fronzenset 替代 set,这样更加安全。有时候程序要求必须是不可变对象,这个时候也要使用 fronzenset 替代 set。set 集合本身的元素必须是不可变的, 所以 set 的元素不能是 set,只能是 frozenset。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值