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

yizhihongxing

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实现matplotlib显示中文的方法详解

    在Python中使用Matplotlib库绘制图表时,如果需要显示中文,需要进行一些额外的配置。本文将详细讲解Python实现Matplotlib显示中文的方法。 方法一:使用中文字体 Matplotlib默认使用英文字体,如果需要显示中文,可以使用中文字体。以下是一个使用中文字体的示例: import matplotlib.pyplot as plt fr…

    python 2023年5月15日
    00
  • python2.7实现爬虫网页数据

    当使用Python 2.7进行网络爬虫的时候,首先需要安装requests库,该库可以在Python代码中进行网络请求。 pip install requests 接下来,我们需要从一个URL中获取HTML内容。使用requests库可以轻松实现这一操作。 import requests response = requests.get(‘https://ww…

    python 2023年5月14日
    00
  • Python实现快速大文件比较代码解析

    下面是关于Python实现快速大文件比较的完整攻略。 简介 在日常的开发工作中,文件比较是经常用到的功能。当需要比较的文件比较大时,简单的比较操作可能会导致程序崩溃或长时间无响应。因此,我们需要一种快速的方式来比较大文件。 这篇文章将介绍使用Python实现快速大文件比较的方法和技巧。主要思路是对文件进行分块,并对每个块进行哈希计算,最终使用哈希值来进行比较…

    python 2023年5月14日
    00
  • ChatGPT 帮我自动编写 Python 爬虫脚本的详细过程

    下面是详细讲解“ChatGPT 帮我自动编写 Python 爬虫脚本的详细过程”的完整攻略。 1. 背景介绍 聊天机器人是利用机器学习和自然语言处理技术搭建的人工智能应用程序,可用于模拟人类对话。ChatGPT是一个基于自然语言处理技术的聊天机器人,能够生成各种类型的对话内容。 Python爬虫是指使用Python编写的网络数据采集工具,通过爬虫程序可以获取…

    python 2023年5月19日
    00
  • pip报错“TypeError: ‘NoneType’ object is not subscriptable”怎么处理?

    当使用 pip 安装 Python 包时,可能会遇到 “TypeError: ‘NoneType’ object is not subscriptable” 错误。这个错误通常是由于 pip 安装包时出现问题导致的。以下是详细讲解 pip 报错 “TypeError: ‘NoneType’ object is not subscriptable” 的原因与解…

    python 2023年5月4日
    00
  • python实现Flappy Bird源码

    让我来详细讲解一下如何用Python实现Flappy Bird游戏源码的完整攻略。 1. 获取源码 Flappy Bird游戏的源码在GitHub上有很多开源的版本,你可以通过搜索“Flappy Bird Python源码”等关键词找到相应的代码库。这里以一个比较经典的版本为例:sourabhv/FlapPyBird。 在获取代码之后,你需要先安装Pytho…

    python 2023年5月19日
    00
  • Python正规则表达式学习指南

    Python正则表达式学习指南 正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。Python re 模块提了正则表达式的支持,本攻略将详细讲解 Python 中的正则表达式的基本用法、常用符号和例应用。 基本用法 Python 中使用 re 模块提供的函数来操作正则表达式。模块提供了常用函数: re.search(pattern, stri…

    python 2023年5月14日
    00
  • Python取读csv文件做dbscan分析

    下面是Python取读csv文件做dbscan分析的完整攻略。 1. 确定分析目的 在进行数据分析前,我们需要确定分析的目的和问题,以确保分析结果的准确性和实用性。在本文中,我们假设已经明确了分析目的为对csv文件中的数据进行聚类,找出其中相似的数据点,以便进一步的分析和应用。 2. 准备工作 在进行数据分析前,我们需要进行一些必要的准备工作,主要包括以下几…

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