Python列表和元组的区别?

迈不过友情╰ 2024-03-30 14:41 154阅读 0赞

静态数据类型是指不可以对该数据类型进行修改,即只读的数据类型。迄今为止学过的静态数据类型有字符串,元组。

在使用[]操作符对字符串,元组进行修改时,Python会抛出类型错误的异常信息,我们可以在交互模式中进行验证:








1

2

3

4

5

6

7

8

9

10

>>> content = “static data type”

>>> content[0]=S

Traceback (most recent call last):

File “<stdin>”, line 1, in <module>

NameError: name ‘S’ is not defined

>>> numbers = (1,2,3,4,5)

>>> numbers[0] = 6

Traceback (most recent call last):

File “<stdin>”, line 1, in <module>

TypeError: ‘tuple’ object does not support item assignment

可变数据类型

与静态数据类型相对的是可变数据类型,在可变数据类型中,可以对集合中的元素进行修改。列表,以及在后面将要介绍的复合数据类型:字典,集合,类类型等,都是可变的数据类型。我们同样可以在交互模式中进行验证:








1

2

3

4

5

6

7

8

>>> numbers =[1,2,3,4,5]

>>> id(numbers)

2749153235976

>>> numbers[0]=6

>>> numbers

[6, 2, 3, 4, 5]

>>> id(numbers)

2749153235976

从交互模式的输出中可以分析出,可以通过[]操作符列表类型进行修改。修改后的列表与修改前的列表,它们具有相同的id值,说明是同一个列表。

执行内置的id函数可以输出id值,id值即内存地址。

元组与列表的区别

在使用元组的场景中,都可以使用列表来进行代替,那么为什么还要定义元组这种数据类型?在本小节的内容中,通过两个方面来进行分析:

(1) 元组是静态,只读的数据类型

元组与列表的核心区别在于,元组是静态的,列表是动态的, 可变的。我们在定义变量时,如果该数据对象具备静态,只读的属性,应当使用元组,否则应当使用列表。以生活中的购物清单来进行举例,在购物清单中,我们可以随时对清单进行修改,比如添加某一个商品,或从购物车中移除某一个商品。

购物清单是可修改的,动态的,现在通过Python代码进行模拟:








1

2

3

4

5

6

7

8

9

10

11

12

# desc = 通过Python代码模拟购物清单的添加和删除

# 定义shopping_list,表示购物清单

shopping_list =[“橙子”, “苹果”, “香蕉”]

# 苹果已经断货,从购物车中移除

shopping_list.remove(“苹果”)

# shopping_list的输出为[“橙子”, “香蕉”]

# 从购物车中添加葡萄

shopping_list.append(“葡萄”)

# shopping_list的输出为[“橙子”, “香蕉”, “葡萄”]

一星期有七天,从星期一到星期日,不会再包含其它的时间单位,一星期所包含的时间显然是静态的。此时通过元组来定义一星期的所有时间,在使用上非常自然:








1

2

3

4

5

6

7

8

9

10

# desc = 通过元组来表示一星期

# 定义变量week,表示一星期

week =(“星期一”, “星期二”, “星期三”,”星期四”, “星期五”, “星期六”,”星期日”)

我们同样可以通过列表来表示一星期:

# desc = 通过列表来表示一星期

# 定义变量week,表示一星期

week =[“星期一”, “星期二”, “星期三”,”星期四”, “星期五”, “星期六”,”星期日”]

由于列表是动态的数据类型,所以可以在程序中随时对列表进行修改,比如某粗心的程序员在一周的时间里添加了一个星期八:








1

2

3

4

5

# desc = 粗心的程序员添加了个周八

# 定义变量week,表示一周

week =[“星期一”, “星期二”, “星期三”,”星期四”, “星期五”, “星期六”,”星期日”]

week.append(“星期八”)

# week的输出为[“星期一”, “星期二”, “星期三”,”星期四”, “星期五”, “星期六”,”星期日”,”星期八”]

一周的时间里包含星期八,这显然不符合日常逻辑。而使用元组,可以避免这样的问题,一旦对元组进行修改,Python就会抛出异常。

(2) 元组的自动解包

利用这样的特性,可以非常优雅地对多个变量进行赋值。

代码实例:








1

2

3

4

5

6

7

# desc = 通过元组的解包来优雅地赋值

# 定义returned_values表示函数的返回值

returned_values =(True, 1314)

state, result =retured_values

# state的值为True, result的值为1314

在Python的函数中可以返回多个值,实质返回的是一个元组,然后利用元组的自动解包,将返回值一一地进行赋值。

要点

(1) 静态数据类型是指不可以对该数据类型进行修改,即只读的数据类型。迄今为止学过的静态数据类型有字符串,元组。

(2) 与静态数据类型相对的是动态数据类型,动态数据类型支持对集合中的元素进行修改。列表,以及其它复合数据类型:字典,集合,类类型等,都是动态的数据类型。

发表评论

表情:
评论列表 (有 0 条评论,154人围观)

还没有评论,来说两句吧...

相关阅读