美文网首页
深入理解python列表和元组

深入理解python列表和元组

作者: Xyxtank | 来源:发表于2019-06-24 11:19 被阅读0次

列表和元组的定义

列表和元组都是一个可以放置任意数据类型的有序集合。这里需要注意三个词,任意、有序、集合,其实就是说明列表和元组是可以放置任意数据类型,其次是有序的,另外,它是一个集合。

列表是动态的,它的长度大小不固定的,可以随意的增加、删除或者改变。

l=[1,2,1,2,'name']
l[4]='hello'
print(l)
[1, 2, 1, 2, 'hello']

元组是静态的,它的长度大小是固定的,无法增加、删除或者改变。

l=(1,2,1,2,'name')
l[4]='hello'
print(l)
TypeError                                 Traceback (most recent call last)
<ipython-input-7-1bc67cb7b49e> in <module>
      1 l=(1,2,1,2,'name')
----> 2 l[4]='hello'
      3 print(l)

TypeError: 'tuple' object does not support item assignment

列表和元组的存储方式

列表是动态的、可变的,而元组是静态的、不可变的。

列表的存储方式,如下所示:

l=[]
print(l.__sizeof__())
l=[1]
print(l.__sizeof__())
l=[1,2]
print(l.__sizeof__())
l=[1,2,3]
print(l.__sizeof__())
l=[1,2,3,4]
print(l.__sizeof__())
40
48
56
64
72

元组的存储方式,如下所示:

l=()
print(l.__sizeof__())
l=(1,)
print(l.__sizeof__())
l=(1,2)
print(l.__sizeof__())
l=(1,2,3)
print(l.__sizeof__())
l=(1,2,3,4)
print(l.__sizeof__())
24
32
40
48
56

存储同样的元素,元组使用的存储空间更小,要少16个字节。这是因为列表是动态的,所以列表中要存储指针,来指向对应的元素。另外,列表是可变的,所以需要额外存储已经分配的存储信息,因为它要知道现在已经存储了多少信息,还剩下多少,需不需要额外分配存储空间等等。所以,列表多出来的存储空间主要是:指针 + 存储空间长度。

如下例子可以看到列表存储空间的变化:

列表存储空间变化:

l=[]
print(f'列表:{l}')
print(l.__sizeof__())

l.append(1)#增加一个元素,存储空间增加32字节,由于添加的元素为int类型(8字节),那么可以存放32/8=4个元素。
print(f'列表:{l}')
print(l.__sizeof__())

l.append(2)#增加一个元素
print(f'列表:{l}')
print(l.__sizeof__())

l.append(3)
print(f'列表:{l}')
print(l.__sizeof__())

l.append(4)
print(f'列表:{l}')
print(l.__sizeof__())

l.append(5)#加入元素 5 之后,列表的空间不足,所以又额外分配了可以存储空间
print(f'列表:{l}')
print(l.__sizeof__())
列表:[]
40
列表:[1]
72
列表:[1, 2]
72
列表:[1, 2, 3]
72
列表:[1, 2, 3, 4]
72
列表:[1, 2, 3, 4, 5]
104

列表和元组的性能

从列表和元组的存储方式可以得出,元组的性能是优于列表的。

元组和列表的初始化性能比较:

import timeit

print(timeit.timeit(stmt='x=(1,2,3,4,5,6)',number=100000))
print(timeit.timeit(stmt='x=[1,2,3,4,5,6]',number=100000))
0.004769199999827833
0.01035909999973228

相关文章

  • 深入理解python列表和元组

    列表和元组的定义 列表和元组都是一个可以放置任意数据类型的有序集合。这里需要注意三个词,任意、有序、集合,其实就是...

  • Python基础之元组、字典,集合详解

    之前总结了Python列表,这篇总结Python的元组,字典和集合。 一 元组 tuple Python 的元组与...

  • 2018-01-13 python学习第一天

    第二章 列表和元组 列表和元组区别:列表可以修改,二元组则不能 python的6种內建的序列: 列表和元组,字符串...

  • 第3章:内建数据结构、函数及文件

    python的常用数据结构:元组、列表、字典和集合 元组(tuple):固定长度、不可变的python序列 列表:...

  • Python TUPLE - 打包,解包,比较,切片,删除,键

    什么是Python的中的元组? 元组就像一系列不可变Python对象的列表。列表和元组之间的区别在于列表在方括号中...

  • Python基础_05:元组(2019-1-14)

    元组 python中元组和列表类似不同之处在于元组中的元素不可修改元组使用(),列表使用[]return a,b,...

  • python学习——元组

    Python —— 元组 元组与列表极为相似,列表以【】表示,元组以()表示。 列表可以修改其中的元素,元组不可修...

  • Python入门(六)

    元组 列表用[]或者list函数,元组用()或者tuplue 元组是Python的另一种特色的数据类型 元组和列表...

  • Python3 第二章

    第二章 列表和元组 2.1 Python中最基本的数据结构为序列(Python)。 2.2 列表可修改,元组不可修...

  • python 基础 - 元组

    Python 元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号...

网友评论

      本文标题:深入理解python列表和元组

      本文链接:https://www.haomeiwen.com/subject/bauwqctx.html