鱼C论坛

 找回密码
 立即注册
查看: 2777|回复: 6

[已解决]python中集合和字典是序列吗

[复制链接]
发表于 2022-11-15 22:21:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
网上查了很多,有的说集合和字典是无序序列,有的说不是序列,想知道集合和字典到底属不属于序列,谢谢大家~!
最佳答案
2022-11-16 10:54:32
不用生搬硬套,可以看看官方的文档说明,从python3.6开始,字典已经是有序的了,官方文档里有提到。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-15 22:39:58 | 显示全部楼层


不属于吧,序列就是指容器内的元素都是有序的,说是 "无序" 的 "序列" 的不等于是自己推翻自己么,不太严谨

我认为,因为 Python 字典和集合底层还是是哈希表和散列表,而且字典还被称为关联数组,所以底层都还是数组,应该将其称为 无序数组 更为准确

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 22:44:03 | 显示全部楼层
Twilight6 发表于 2022-11-15 22:39
不属于吧,序列就是指容器内的元素都是有序的,说是 "无序" 的 "序列" 的不等于是自己推翻自己么,不太 ...


http://c.biancheng.net/view/4312.html

网上确实也都有说的,那就当成序列中的特殊情况呗

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 22:46:58 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-15 23:17 编辑

        应该不算,这是 Python 中文手册中对序列的定义和描述
序列
此类对象表示以非负整数作为索引的有限有序集。内置函数 len() 可返回一个序列的条目数量。当一个序列的长度为 n 时,索引集包含数字 0, 1, ..., n-1。序列 a 的条目 i 可通过 a[i] 选择。
序列还支持切片: a[i:j] 选择索引号为 k 的所有条目,i <= k < j。当用作表达式时,序列的切片就是一个与序列类型相同的新序列。新序列的索引还是从 0 开始。
有些序列还支持带有第三个 "step" 形参的 "扩展切片": a[i:j:k] 选择 a 中索引号为 x 的所有条目,x = i + n*k, n >= 0 且 i <= x < j。

序列可根据其可变性来加以区分:

不可变序列
不可变序列类型的对象一旦创建就不能再改变。(如果对象包含对其他对象的引用,其中的可变对象就是可以改变的;但是,一个不可变对象所直接引用的对象集是不能改变的。)

以下类型属于不可变对象:

字符串
字符串是由 Unicode 码位值组成的序列。范围在 U+0000 - U+10FFFF 之内的所有码位值都可在字符串中使用。Python 没有 char 类型;而是将字符串中的每个码位表示为一个长度为 1 的字符串对象。内置函数 ord() 可将一个码位由字符串形式转换成一个范围在 0 - 10FFFF 之内的整型数;chr() 可将一个范围在 0 - 10FFFF 之内的整型数转换为长度为 1 的对应字符串对象。str.encode() 可以使用指定的文本编码将 str 转换为 bytes,而 bytes.decode() 则可以实现反向的解码。

元组
一个元组中的条目可以是任意 Python 对象。包含两个或以上条目的元组由逗号分隔的表达式构成。只有一个条目的元组 ('单项元组') 可通过在表达式后加一个逗号来构成 (一个表达式本身不能创建为元组,因为圆括号要用来设置表达式分组)。一个空元组可通过一对内容为空的圆括号创建。

字节串
字节串对象是不可变的数组。其中每个条目都是一个 8 位字节,以取值范围 0 <= x < 256 的整型数表示。字节串字面值 (例如 b'abc') 和内置的 bytes() 构造器可被用来创建字节串对象。字节串对象还可以通过 decode() 方法解码为字符串。

可变序列
可变序列在被创建后仍可被改变。下标和切片标注可被用作赋值和 del (删除) 语句的目标。

目前有两种内生可变序列类型:

列表
列表中的条目可以是任意 Python 对象。列表由用方括号括起并由逗号分隔的多个表达式构成。(注意创建长度为 0 或 1 的列表无需使用特殊规则。)

字节数组
字节数组对象属于可变数组。可以通过内置的 bytearray() 构造器来创建。除了是可变的 (因而也是不可哈希的),在其他方面字节数组提供的接口和功能都于不可变的 bytes 对象一致。

扩展模块 array 提供了一个额外的可变序列类型示例,collections 模块也是如此。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-16 10:54:32 | 显示全部楼层    本楼为最佳答案   
不用生搬硬套,可以看看官方的文档说明,从python3.6开始,字典已经是有序的了,官方文档里有提到。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 22:05:42 | 显示全部楼层
请教高人得到的回复:

集合是无序的不重复序列
字典以前的版本是无序,36以后版本都是有序,所 以网上说有序说无序都对,因为网上的资料时间点 不一样,版本不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 20:34:01 | 显示全部楼层
可变序列
可变序列在被创建后仍可被改变。下标和切片标注可被用作赋值和 del (删除) 语句的目标。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 15:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表