python什么叫序列_列表、元组、字符串等序列类型核心概念解析
发布时间 - 2026-02-02 00:00:00 点击率:次序列是支持索引、切片、len()和迭代的有序容器,核心在于实现__getitem__和__len__方法;list可变,tuple不可变但可含可变对象;str是不可变Unicode序列;range是惰性整数序列。
序列的本质是支持索引和切片的有序容器
Python 中的 list、tuple、str、bytes、range 都是序列类型,根本特征不是“能放多个值”,而是实现了 __getitem__ 和 __len__,从而支持 [i] 索引、[start:stop:step] 切片、len()、for x in seq: 迭代等共性操作。比如 range(5)[2] 能取到 2,range(5)[1:4] 返回 range(1, 4) —— 它没存所有数,但行为符合序列协议。
列表和元组的关键差异在可变性与内存模型
列表是可变序列(list),支持 .append()、.pop()、[i] = x;元组是不可变序列(tuple),创建后不能增删改元素。注意:不可变 ≠ 所有嵌套对象都不可变。例如 t = ([1], 2) 是合法元组,t[0].append(3) 不报错,因为变的是列表对象本身,元组里存的只是对它的引用。
- 函数参数默认用
tuple接收多余位置参数:def f(*args):→args是tuple -
dict.keys()在 Python 3.7+ 返回dict_keys视图,不是序列;想切片得先转成list(d.keys()) - 元组作为字典键可用,列表不行:
{(1, 2): 'ok'}合法,{[1, 2]: 'bad'}报TypeError: unhashable type: 'list'
字符串是不可变的字符序列,不是“字符数组”
str 行为上像只读元组,但底层是 Unicode 码点序列,不是字节数组。所以 'abc'[1] 返回 'b'(仍是 str 类型),不是 int 或 bytes;'abc'[1:2] 也是 str,不是单个字符类型。常见误区:
- 误以为
s[0]是 ASCII 值:实际是长度为 1 的字符串,要转数字得用ord(s[0]) - 用
+=拼接大量字符串性能差:每次都会新建对象,应改用''.join(list_of_str) -
str支持.encode()得bytes,但bytes切片返回仍是bytes,不是int;要取单个字节整数值,得用b[0](Python 3)
别把 range 当作“轻量 list”,它不存储全部值
range 是惰性序列,只存 start/stop/step 三个数和长度逻辑,len(range(10**10)) 瞬间返回,而 list(range(10**10)) 直接爆内存。但它不支持任意对象索引——只能用整数,且不支持 .append() 等方法。容易踩坑的点:
-
range(5) == range(0, 5)为True,但range(0, 5, 1) is not range(0, 5)(不同对象) -
list(range(1, 6))[::2]得[1, 3, 5];但range(1, 6)[::2]得range(1, 6, 2),仍是range对象 - 传给需要“真列表”的函数(如
numpy.array())时,必须显式调用list(),否则可能触发意外行为
序列协议看着简单,但跨类型混用时(比如把 range 当 list 用、对 str 做 .append)出错往往不直观。最稳妥的做法是:先用 isinstance(x, colle 检查,再按需转换,而不是依赖鸭子类型硬刚。
# python
# app
# 字节
# numpy
# Array
# for
# 子类
# 字符串
# int
# 切片
# len
# append
# 对象
# ASCII
# 仍是
# 不支持
# 的是
# 都是
# 看着
# 迭代
# 都不
# 多个
# 报错
# 但它
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
轻松掌握MySQL函数中的last_insert_id()
Android Socket接口实现即时通讯实例代码
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
HTML 中动态设置元素 name 属性的正确语法详解
Swift开发中switch语句值绑定模式
Windows Hello人脸识别突然无法使用
详解Android——蓝牙技术 带你实现终端间数据传输
网站建设保证美观性,需要考虑的几点问题!
Java遍历集合的三种方式
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
b2c电商网站制作流程,b2c水平综合的电商平台?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
如何获取PHP WAP自助建站系统源码?
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
桂林网站制作公司有哪些,桂林马拉松怎么报名?
Linux网络带宽限制_tc配置实践解析【教程】
Android仿QQ列表左滑删除操作
Laravel如何使用Vite进行前端资源打包?(配置示例)
Laravel如何实现本地化和多语言支持?(i18n教程)
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
焦点电影公司作品,电影焦点结局是什么?
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
百度浏览器如何管理插件 百度浏览器插件管理方法
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
js实现点击每个li节点,都弹出其文本值及修改
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
如何挑选高效建站主机与优质域名?
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
微信小程序 闭包写法详细介绍
如何快速搭建个人网站并优化SEO?
西安专业网站制作公司有哪些,陕西省建行官方网站?
Android自定义listview布局实现上拉加载下拉刷新功能
如何在宝塔面板中创建新站点?
如何构建满足综合性能需求的优质建站方案?
奇安信“盘古石”团队突破 iOS 26.1 提权
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Android利用动画实现背景逐渐变暗
香港服务器部署网站为何提示未备案?
如何在阿里云部署织梦网站?
在线教育网站制作平台,山西立德教育官网?
Laravel如何使用Sanctum进行API认证?(SPA实战)
Linux安全能力提升路径_长期防护思维说明【指导】
JS实现鼠标移上去显示图片或微信二维码
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
打造顶配客厅影院,这份100寸电视推荐名单请查收

