一文搞懂Python List和Tuple的区别

 更新时间:2025年05月15日 08:32:56   作者:烛阴  
list和tuple都是可迭代对象中的容器序列,能够存放不同类型的数据,并且存的是它们所包含的任意类型的对象的引用,这算是两者之间的一个相同点,本文详细给大家介绍了Python List和Tuple的区别,需要的朋友可以参考下

一、List和Tuple的基本概念

  • List(列表):是 Python 内置的一种数据类型。 它是一种有序的集合,可以随时添加和删除其中的元素。
  • Tuple(元组):也是 Python 内置的一种数据类型。不可变的有序集合,一旦创建,元素不可更改。

示例代码:

my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
  • 注意:元组中只包含一个元素时,需要在元素后面添加逗号,my_tuple=(123,),如果不加逗号,创建出来的就不是 元组(tuple),而是指 123 这个数了。这是因为括号 () 既可以表示元组(tuple),又可以表示数学公式中的小括号,这就产生了歧义。

二、核心区别一览表

特性List(列表)Tuple(元组)
可变性可变不可变
语法[1, 2, 3](1, 2, 3)
占用内存较大较小
速度较慢较快
是否可哈希
适用场景需要修改数据不需要修改数据

三、List和Tuple的高效用法

1. List的高效操作

  • 批量添加元素
my_list.extend([4, 5, 6])
  • 列表推导式
squares = [x**2 for x in range(10)]
  • 删除元素
my_list.remove(2)  # 删除值为2的元素
del my_list[0]     # 删除第一个元素
  • 常用函数&方法

函数&方法描述
len(list)列表元素个数
max(list)返回列表元素最大值
min(list)返回列表元素最小值
list(seq)将元组转换为列表
list.append(obj)在列表末尾添加新的对象
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)将对象插入列表
list.pop(obj=list[-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中的一个元素(参数是列表中元素),并且不返回任何值
list.reverse()反向列表中元素
list.sort([func])对原列表进行排序

2. Tuple的隐藏优势

  • 作为字典的键
my_dict = {('x', 1): 'value1', ('y', 2): 'value2'}
  • 解包赋值
a, b, c = (1, 2, 3)
  • 函数返回多个值
def get_point():
    return (3, 4)
x, y = get_point()

四、List和Tuple的性能对比

Tuple的访问速度比List快!因为Tuple是不可变的,Python可以对其做更多优化。

性能测试:

import timeit

print(timeit.timeit(stmt="[1,2,3,4,5]", number=1000000))
print(timeit.timeit(stmt="(1,2,3,4,5)", number=1000000))

五、到底该用List还是Tuple?

  • 需要频繁修改数据? 用List!
  • 数据不会变,追求性能和安全? 用Tuple!
  • 要做字典的key? 只能用Tuple!

六、你可能忽略的细节

  • 单元素Tuple要加逗号:(1,)
  • Tuple可以嵌套List,但List不能作为字典的key

总结

到此这篇关于一文搞懂Python List和Tuple的区别的文章就介绍到这了,更多相关Python List和Tuple区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python编写监控视频存储计算器

    基于Python编写监控视频存储计算器

    这篇文章主要为大家详细介绍了如何基于Python编写一个监控视频存储计算器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • Python实现自动识别数字验证码

    Python实现自动识别数字验证码

    这篇文章主要为大家详细介绍了如何使用Python来自动识别数字验证码,以便在需要时自动填写或验证验证码,有需要的小伙伴可以参考一下
    2024-04-04
  • 详解python异步编程之asyncio(百万并发)

    详解python异步编程之asyncio(百万并发)

    这篇文章主要介绍了详解python异步编程之asyncio(百万并发),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Python使用itchat 功能分析微信好友性别和位置

    Python使用itchat 功能分析微信好友性别和位置

    这篇文章主要介绍了 Python使用itchat 功能分析微信好友性别和位置 的相关资料,需要的朋友可以参考下
    2019-08-08
  • Python学习之线程池与GIL全局锁详解

    Python学习之线程池与GIL全局锁详解

    本文我们将学习线程池的创建与全局锁。线程池的创建于进程池的原理是相同的;关于GIL全局锁,暂时没有代码上的练习,而是对其概念进行一个简单的启蒙,感兴趣的可以了解一下
    2022-04-04
  • python基础教程之匿名函数lambda

    python基础教程之匿名函数lambda

    这篇文章主要介绍了 python基础教程之匿名函数lambda的相关资料,需要的朋友可以参考下
    2017-01-01
  • 用python结合jieba和wordcloud实现词云效果

    用python结合jieba和wordcloud实现词云效果

    词云,顾名思义就是很多个单词,然后通过出现的频率或者比重之类的标准汇聚成一个云朵的样子嘛,其实呢现在网上已经有很多能自动生成词云的工具了,比如Wordle,Tagxedo等等,Python也能实现这样的效果,我们通过jieba库和wordcloud库也能十分轻松的完成词云的构建
    2017-09-09
  • python中的tcp示例详解

    python中的tcp示例详解

    这篇文章主要给大家介绍了关于python中tcp协议的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • matplotlib制作雷达图报错ValueError的实现

    matplotlib制作雷达图报错ValueError的实现

    这篇文章主要介绍了matplotlib制作雷达图报错ValueError的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python处理自动化任务之同时批量修改word里面的内容的方法

    python处理自动化任务之同时批量修改word里面的内容的方法

    在本篇文章里小编给各位整理的是一篇关于利用python处理自动化任务之同时批量修改word里面的内容的文章,需要的可以参考学习下。
    2019-08-08

最新评论