鱼C论坛

 找回密码
 立即注册
查看: 191|回复: 4

[已解决]列表问题

[复制链接]
发表于 2024-3-10 16:40:29 | 显示全部楼层 |阅读模式

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

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

x
s = [1, 2, 3, 4, 5]
s[len(s): ] = [6]
输出s为[1,2,3,4,5,6]
请问这里面len(s):后面的空格表示什么呀,后面的[6]不是角标的意思吗怎么能添加到切片里?为什么要用=进行赋值操作呀?
最佳答案
2024-3-10 17:19:34
在 Python 中,切片操作符 slice[start:end] 被用来从序列中获取一个元素的子集。

这里的 start 是切片开始的索引,end 是切片结束的索引(但不包括 end 本身)。

如果 start 是序列的长度或者更大,切片操作将会返回一个空的序列。

在你给出的代码 s[len(s):] = [6] 中:

len(s) 返回列表 s 的长度,这里是 5。

s[len(s):] 创建了一个从列表最后一个元素的下一个位置开始到列表末尾的切片。由于这个位置就是列表的末尾,所以这个切片在赋值之前是一个空的切片。

[6] 是一个包含单个元素 6 的新列表。

s[len(s):] = [6] 这个操作的意思是将 [6] 这个列表的内容赋值给 s 的一个子切片。

由于这个子切片本身是空的,这个操作的效果等同于在列表 s 的末尾追加元素 6。

因此,整个操作等同于执行了 s.append(6)。

在 Python 中,[6] 不是索引或角标的意思,而是一个包含单个元素 6 的新列表。

这种语法是一种快速创建列表的方式。

使用 = 进行赋值操作是因为切片操作也支持替换序列的一部分。当你对切片进行赋值时,你实际上是在告诉 Python 将右侧的序列内容放入左侧指定的位置。

在这个例子中,你是在空切片的位置添加元素,所以它表现为在列表末尾追加元素。

详细讲解看小甲鱼列表切片课程 P22:

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

使用道具 举报

发表于 2024-3-10 16:40:44 | 显示全部楼层
这个问题涉及到两个概念:切片和赋值操作。

首先,列表的切片可以用来获取列表中的一部分元素。意思是从列表中选择一段连续的元素,并将它们作为一个新的列表返回。切片的语法是`[start:end]`,其中`start`表示起始位置(包含在切片内),`end`表示结束位置(不包含在切片内)。如果`start`和`end`都为空,则切片会返回整个列表。

现在回到你的问题,当你写下`len(s):`的时候,这里的冒号表示你想要获取从索引0开始直到末尾的切片。因此,`len(s):`实际上是一个合法的切片语法,表示你想要获取整个列表。

关于赋值操作,你提到的是`s =`。这是一种赋值操作,用来给变量`s`赋予一个新的值或一个新的对象。在这里,你没有给出具体的值或对象,所以这行代码是不完整的。我们通常会用一个具体的值或对象来完成赋值操作,例如`s = [1, 2, 3]`,这样`s`就被赋值为一个包含元素1、2、3的列表。

希望这样解释能够帮助你理解!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-10 17:19:34 | 显示全部楼层    本楼为最佳答案   
在 Python 中,切片操作符 slice[start:end] 被用来从序列中获取一个元素的子集。

这里的 start 是切片开始的索引,end 是切片结束的索引(但不包括 end 本身)。

如果 start 是序列的长度或者更大,切片操作将会返回一个空的序列。

在你给出的代码 s[len(s):] = [6] 中:

len(s) 返回列表 s 的长度,这里是 5。

s[len(s):] 创建了一个从列表最后一个元素的下一个位置开始到列表末尾的切片。由于这个位置就是列表的末尾,所以这个切片在赋值之前是一个空的切片。

[6] 是一个包含单个元素 6 的新列表。

s[len(s):] = [6] 这个操作的意思是将 [6] 这个列表的内容赋值给 s 的一个子切片。

由于这个子切片本身是空的,这个操作的效果等同于在列表 s 的末尾追加元素 6。

因此,整个操作等同于执行了 s.append(6)。

在 Python 中,[6] 不是索引或角标的意思,而是一个包含单个元素 6 的新列表。

这种语法是一种快速创建列表的方式。

使用 = 进行赋值操作是因为切片操作也支持替换序列的一部分。当你对切片进行赋值时,你实际上是在告诉 Python 将右侧的序列内容放入左侧指定的位置。

在这个例子中,你是在空切片的位置添加元素,所以它表现为在列表末尾追加元素。

详细讲解看小甲鱼列表切片课程 P22:

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

使用道具 举报

 楼主| 发表于 2024-3-10 17:32:26 | 显示全部楼层
不二如是 发表于 2024-3-10 17:19
在 Python 中,切片操作符 slice[start:end] 被用来从序列中获取一个元素的子集。

这里的 start 是切片 ...

想请问一下为什么要用中括号[6]不用小括号(6)呢?列表第一讲里面说中括号代表下标的意思,分不清了qaq
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-10 19:56:28 | 显示全部楼层
本帖最后由 jackz007 于 2024-3-10 19:59 编辑
Tuster 发表于 2024-3-10 17:32
想请问一下为什么要用中括号[6]不用小括号(6)呢?列表第一讲里面说中括号代表下标的意思,分不清了qaq


         为什么要用中括号,而不可以用小括号?就好比到英国要说英语,到中国要说汉语一样,走到哪里就要遵守那里的规矩。等你实力强大以后,可以发明一种新的语言,专门用小括号来索引列表,我们期待着这一天。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 08:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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