Python中set与frozenset方法和区别详解

Python中set与frozenset方法和区别详解

1. set方法

在Python中set是一种可变的集合类型,用大括号{}括起来,集合中的元素是无序的且不允许重复。set中的元素必须是不可变的数据类型(如字符串、数字等)。

创建set

我们可以使用以下几种方式来创建set:

  • 直接使用花括号{}创建
  • 使用内置函数set()创建

如下所示:

# 直接使用花括号{}创建set
my_set = {1, 2, 3, "hello", "world"}
print(my_set)

# 使用内置函数set()创建set
my_set = set([1, 2, 3, "hello", "world"])
print(my_set)

运行结果:

{1, 2, 3, 'hello', 'world'}
{1, 2, 3, 'hello', 'world'}

添加元素

我们可以使用add()方法向set中添加元素,如下所示:

my_set = {1, 2, 3, "hello", "world"}

# 向set中添加元素
my_set.add("Python")
print(my_set)

运行结果:

{1, 2, 3, 'world', 'Python', 'hello'}

删除元素

我们可以使用remove()方法来删除set中的元素,如果元素不存在则抛出KeyError异常,如下所示:

my_set = {1, 2, 3, "hello", "world"}

# 删除元素
my_set.remove(3)
print(my_set)

# 删除不存在的元素,抛出KeyError异常
my_set.remove(4)

运行结果:

{1, 2, 'world', 'hello'}
Traceback (most recent call last):
  File "<stdin>", line 7, in <module>
KeyError: 4

2. frozenset方法

在Python中frozenset是一种不可变的集合类型,它的特点与set一样,但是frozenset中的元素是不可变的,因此可以作为字典的key。

创建frozenset

我们可以使用内置函数frozenset()来创建frozenset,如下所示:

# 使用内置函数frozenset()创建frozenset
my_frozenset = frozenset([1, 2, 3, "hello", "world"])
print(my_frozenset)

运行结果:

frozenset({1, 2, 3, 'world', 'hello'})

添加元素

由于frozenset是不可变的,因此无法使用add()方法来添加元素。

删除元素

由于frozenset是不可变的,因此无法使用remove()方法来删除元素。

区别

set和frozenset的主要区别在于set是可变的,frozenset是不可变的。因此我们可以通过add()和remove()方法来修改set,但是无法修改frozenset。而frozenset可以作为字典的key,set不可以。

示例1:

# set作为字典的键
my_set = {1, 2, 3}
my_dict = {my_set: "hello"}
print(my_dict)

# frozenset作为字典的键
my_frozenset = frozenset([1, 2, 3])
my_dict = {my_frozenset: "world"}
print(my_dict)

运行结果:

{{1, 2, 3}: 'hello'}
{frozenset({1, 2, 3}): 'world'}

示例2:

# set可以使用add()方法添加元素
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)

# frozenset无法使用add()方法添加元素
my_frozenset = frozenset([1, 2, 3])
my_frozenset.add(4)

运行结果:

{1, 2, 3, 4}
Traceback (most recent call last):
  File "<stdin>", line 6, in <module>
AttributeError: 'frozenset' object has no attribute 'add'

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中set与frozenset方法和区别详解 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python爬取Coursera课程资源的详细过程

    在本攻略中,我们将介绍如何使用Python爬取Coursera课程资源的详细过程。以下是一个完整攻略,包括两个示例。 步骤1:安装必要的库 首先,需要安装必要的库。我们将使用requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML页面。 以下是一个示例代码,演示如何使用pip安装requests和BeautifulSoup: p…

    python 2023年5月15日
    00
  • python编写暴力破解FTP密码小工具

    下面是Python编写暴力破解FTP密码小工具的完整攻略: 思路 导入常用的ftplib、os等模块 读取字典文件,每个元素为一行密码,存放到list中 通过循环遍历用户名列表和密码列表,对每个用户名进行暴力破解 通过ftplib模块中FTP()函数建立ftp对象,并使用login()尝试登录 若成功登录,则打印出用户名和密码,结束程序 若失败,则继续尝试下…

    python 2023年5月13日
    00
  • python爬虫请求头设置代码

    以下是关于“Python 爬虫请求头设置代码”的完整攻略: Python 爬虫请求头设置代码 在进行爬虫时,为了避免被网站识别为机器人,我们需要设置请求头。以下是 Python 爬虫请求头设置代码的详细介绍。 使用 requests 库 requests 是 Python 中常用的 HTTP 请求库,可以用于爬虫。以下是使用 requests 库设置请求头的…

    python 2023年5月15日
    00
  • python如何提取xml指定内容

    当需要从XML文件中提取指定内容时,可以使用Python的内置库xml.etree.ElementTree。以下是提取XML指定内容的完整攻略步骤: 导入xml.etree.ElementTree库 在Python代码中导入xml.etree.ElementTree库,该库是内置的,无需安装。 import xml.etree.ElementTree as …

    python 2023年6月3日
    00
  • Python实现不规则图形填充的思路

    下面我将给出详细的Python实现不规则图形填充的攻略。 思路概述 要实现不规则图形的填充,我们需要以下步骤: 根据不规则图形的边界,生成一个包含所有像素点的列表; 循环遍历每个像素点,判断该点是否在不规则图形内部; 如果该点在内部,则对该点进行填充(修改颜色); 输出最终填充完成的图形。 示例一:用Python实现一个正方形的填充 下面是在Python中实…

    python 2023年5月19日
    00
  • Python中的常见数据集打乱方法

    针对Python中常见的数据集打乱方法,我为大家提供以下完整攻略。 打乱数据集的原因 在机器学习中,我们通常会将数据集分成训练集、验证集和测试集。由于数据集中每个类别的数据一般是顺序存储的,如果我们在分数据集之前不打乱数据集的顺序,就有可能会导致测试集或验证集中只包含某一类别的数据,这样就没有代表性了。 打乱数据集的顺序可以避免该问题的发生,从而提高模型的准…

    python 2023年6月3日
    00
  • Selenium+BeautifulSoup+json获取Script标签内的json数据

    有时候,网站上的数据可能是通过JavaScript动态生成的,这时候就需要使用Selenium和BeautifulSoup来获取Script标签内的json数据。本文将详细讲解如何使用Selenium和BeautifulSoup获取Script标签内的json数据,包括两个示例。 步骤一:安装Selenium和BeautifulSoup 在使用Seleniu…

    python 2023年5月15日
    00
  • 简单了解python的一些位运算技巧

    简单了解Python的一些位运算技巧 Python中的位运算是一种对二进制数进行操作的技术,可以用于优化代码和解决一些特定的问题。本文将介绍Python中的位运算及其用法,并提供两个示例说明。 位运算符 Python中的位运算包括以下几种: &位与 | 按位或 ^ 按位异或 ~ 按位取反 << 左移 >> 右移 这些运算符可以…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部