python中的不可变数据类型与可变数据类型详解

yizhihongxing

Python中的不可变数据类型与可变数据类型详解

Python中的数据类型分为两类:不可变(Immutable)和可变(Mutable)。不可变类型的值在创建后不能修改,当尝试修改时,Python会创建一个新的对象并返回新对象引用,而不是修改原对象。而可变类型的值是可以修改的,原对象的引用不会变。

以下是常见的Python中的不可变数据类型和可变数据类型:

不可变数据类型

整型(int)

整型是最常见的不可变数据类型。整型在Python中表示整数,例如:

x = 5

上面的代码创建了一个整型变量,并将值赋为5。如果我们尝试修改它:

x = 10

这并不是修改了整数变量的值,而是创建了一个新的整型变量,其值为10,并将这个新的引用赋值给x。原始的整数变量被保留在内存中。

字符串(str)

字符串也是不可变的。字符串一旦被创建,它的值就不能被更改。例如:

s = 'hello'

我们可以对字符串进行索引操作,但不能更改它:

print(s[0])  # Output: 'h'
s[0] = 'a'   # TypeError: 'str' object does not support item assignment

Python会抛出TypeError异常,因为字符串是不可变的。如果我们想要改变字符串,我们需要创建一个新的字符串对象。

元组(tuple)

元组也是不可变的。一旦创建了元组,就不能修改它的值或者元素。例如:

t = (1, 2, 3)

元组的元素可以通过索引访问,但不能更改它们的值:

print(t[0])  # Output: 1
t[0] = 4    # TypeError: 'tuple' object does not support item assignment

不可变集合(frozenset)

不可变集合(frozenset)同样是不可变的,一旦创建就不能修改。例如:

fs = frozenset([1, 2, 3])

我们可以通过索引操作访问不可变集合的元素,但不能进行修改:

print(fs[0])  # Output: TypeError: 'frozenset' object does not support indexing
fs.add(4)     # AttributeError: 'frozenset' object has no attribute 'add'

尝试对不可变集合进行修改会抛出类似TypeError和AttributeError的错误。

可变数据类型

列表(list)

列表(list)是最常见的可变数据类型之一。与不可变类型不同的是,列表的值可以进行修改。例如:

lst = [1, 2, 3]

我们可以使用索引来访问列表的值,也可以使用索引来修改它们:

print(lst[0])  # Output: 1
lst[0] = 4
print(lst)     # Output: [4, 2, 3]

字典(dict)

字典(dict)也是一种可变类型,可以添加、修改或删除其中的键值对。例如:

dict = {'a': 1, 'b': 2}

在字典中,我们可以使用键来查找和更改值:

print(dict['a'])  # Output: 1
dict['a'] = 3
print(dict)       # Output: {'a': 3, 'b': 2}

总结

不可变类型的值在创建后就不能被更改,而可变类型的值是可以修改的。在编写程序时,需要根据需要选择适当的数据类型,并注意如何将它们传递给函数和修改其中的值。

在Python中,不可变数据类型包括int、str、tuple和frozenset;可变数据类型包括list和dict。

示例:

# Example1 - 可变类型
lst = [1, 2, 3]
def func(list):
   list[0] = 4
func(lst)
print(lst)   # Output: [4, 2, 3]

# Example2 - 不可变类型
a = 5
b = a
a += 2
print(b)    # Output: 5

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的不可变数据类型与可变数据类型详解 - Python技术站

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

相关文章

  • python PyAUtoGUI库实现自动化控制鼠标键盘

    Python PyAutoGUI是一种自动化框架,允许自动化控制键盘和鼠标。通过这个框架,可以模拟人工鼠标键盘操作,从而实现自动化的效果,挽救大量时间和成本。 下面是一个关于如何使用PyAutoGUI框架的完整攻略: 安装PyAutoGUI 要使用PyAutoGUI框架,必须先安装它。安装Python后,在命令提示符或终端窗口中,使用以下命令进行安装: pi…

    python 2023年5月18日
    00
  • python实现微信机器人: 登录微信、消息接收、自动回复功能

    Python实现微信机器人:登录微信、消息接收、自动回复功能 本文将介绍如何使用Python实现微信机器人,主要包括登录微信、消息接收和自动回复功能。这个机器人可以自动反应好友的消息,在接收到特定关键字时自动回复。 实现思路 要实现微信机器人,我们需要用到itchat这个Python库。itchat可以模拟微信客户端的行为,实现登录、消息接收等功能。具体来说…

    python 2023年5月23日
    00
  • Python字节串类型bytes及用法

    Python字节串类型bytes是一种不可变的序列,用于表示二进制数据。它由一系列连续的字节组成,每个字节的值为0~255。在Python中,bytes类型常用于处理二进制数据,例如处理图片、音频或视频文件时,就需要使用bytes类型。下面将详细讲解Python字节串类型bytes及其用法。 1. bytes类型的创建 bytes类型的创建可以通过字面量或b…

    python 2023年5月20日
    00
  • python之MSE、MAE、RMSE的使用

    Python之MSE、MAE、RMSE的使用 概述 在机器学习或数据分析中,我们常常需要进行模型的评价,其中包括回归模型的评价。回归模型的常用评价指标包括MSE(均方误差)、MAE(平均绝对误差)和RMSE(均方根误差)等。本文将详细讲解这三个指标的定义、计算方法和Python中的实现。 指标定义 MSE(Mean Squared Error):计算所有预测…

    python 2023年6月3日
    00
  • python爬虫智能翻页批量下载文件的实例详解

    下面是“Python爬虫智能翻页批量下载文件的实例详解”的完整攻略。 爬虫目标 本次爬虫的目标是爬取一个免费的学术期刊网站上的文章,包括文章标题、作者、摘要和全文PDF。这个网站的每一页都有10篇文章,每个栏目下的文章总数不确定,因此需要智能翻页爬取。 准备工作 在开始之前,需要安装Python和一些必要的库,如requests,BeautifulSoup等…

    python 2023年6月3日
    00
  • Python入门教程 超详细1小时学会Python

    首先,针对这个题目,我们可以分为以下几个方面进行详细讲解: 教程的概括:Python入门教程 超详细1小时学会Python是一份针对初学者的 Python 教程,通篇由文本和视频解析构成,全文分为12个章节,涵盖了Python基础语法、常见的数据类型、流程控制语句、函数、模块等内容。 学习步骤:在学习此教程之前,首先需要安装Python环境,推荐下载安装Py…

    python 2023年5月13日
    00
  • python 解决Fatal error in launcher:错误问题

    在Python编程中,有时候我们会遇到“Fatal error in launcher”的错误,这通常是由于Python环境配置问题引起的。本攻略将提供解决此问题的完整攻略,并提供两个示例。 解决方法 以下是解决“Fatal error in launcher”错误的方法: 检查Python环境变量 重新安装Python 检查Python环境变量 在Wind…

    python 2023年5月13日
    00
  • Python实现中文数字转换为阿拉伯数字的方法示例

    以下是“Python实现中文数字转换为阿拉伯数字的方法示例”的完整攻略。 背景介绍 在中文语境下,我们经常会遇到将中文数字转换成阿拉伯数字的需求,如将“一千零二十五”转换为1025。本文将介绍如何使用Python实现中文数字转换为阿拉伯数字的方法示例。 代码示例 方法一 我们可以使用Python中的Cn2An库来实现中文数字转换为阿拉伯数字。代码如下: fr…

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