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

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日

相关文章

  • Python3中的bytes和str类型详解

    Python3中的bytes和str类型详解 在Python3中,bytes和str类型都是用来存储数据的,但是它们之间有很大的区别。在这篇攻略中,我们将详细讲解bytes和str类型的不同之处,以及如何在它们之间进行转换。 1. str类型 str类型是Python3中最基本的字符串类型,用于存储Unicode编码的字符串。我们可以通过以下方式来创建一个s…

    python 2023年5月31日
    00
  • Python3爬虫发送请求的知识点实例

    Python3爬虫发送请求的知识点实例 在使用Python实现爬虫程序时,经常需要发送请求获取网页内容。本攻略将讲解Python3中常用的发送请求的知识点和实例。 1. 发送GET请求 使用Python3发送GET请求的方式很简单,只需使用requests库的get方法即可,示例如下: import requests response = requests.…

    python 2023年5月13日
    00
  • 如何进行Python中的字符串操作?

    下面是Python中字符串操作的完整攻略: 字符串的定义 Python中字符串是由一系列字符组成的,可以使用单引号、双引号或三引号来定义。其中,单引号和双引号的作用是完全相同的。而三引号被用来表示多行字符串或docstring(文档字符串,用于函数或模块的文档注释)。 示例: s1 = ‘Hello, World!’ s2 = "Python is…

    python 2023年4月19日
    00
  • 基于Python实现将列表数据生成折线图

    下面是基于Python实现将列表数据生成折线图的完整攻略。 1. 准备工作 在使用Python实现折线图前,需要先安装必要的库: pip install matplotlib 安装完成后,在代码中引入matplotlib库: import matplotlib.pyplot as plt 2. 准备数据 折线图的生成需要一组数据,最好是已经排好序的数据列表,…

    python 2023年5月18日
    00
  • python开发入门——set的使用

    Python开发入门——Set的使用 在Python开发中,Set是非常有用的数据类型。它是一种无序、唯一的集合,其中每个元素都是唯一的。在本文中,将介绍如何使用Set这一数据类型。 Set的创建 创建Set很简单,只需要将一个列表或元组作为参数传递给set()函数即可。例如: # 创建Set my_set = set([1, 2, 3, 4, 5]) pr…

    python 2023年5月13日
    00
  • python 实现dict转json并保存文件

    下面是详细的攻略: 1. dict转json Python原生自带了json库,可以很方便地进行dict和json之间的转换。具体的实现方法如下: import json # 将字典转换为JSON格式的字符串 data = {‘name’: ‘John’, ‘age’: 30, ‘city’: ‘New York’} json_str = json.dump…

    python 2023年6月3日
    00
  • python2和python3在处理字符串上的区别详解

    以下是关于 Python 2 和 Python 3 在处理字符串上的区别的完整攻略: 问题描述 Python 2 和 Python 3 在处理字符串上有很大区别。在 Python 2 中,字符串默认为 ASCII 编码,而 Python 3 中,字符串默认为 Unicode 编码。这个问题可能会导致在 Python 2 和 Python 3 中处理字符串时出…

    python 2023年5月13日
    00
  • Python必备技巧之字典(Dictionary)详解

    Python必备技巧之字典(Dictionary)详解 什么是字典? 字典(dictionary)是Python中的一种数据类型,它是一种无序的可变集合,可以存储任意数量的Python对象,它们之间的关系不是通过位置而是通过键来建立的。字典是用大括号{}来声明的,其中每个元素由一个键和一个值组成,它们之间用冒号来分隔。例如: my_dict = {‘name…

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