wbzxz 发表于 2023-2-20 21:06:40

请问谁能解释这种列表切片的用法

本帖最后由 wbzxz 于 2023-2-20 21:12 编辑

在学习python列表过程中,有些问题解释不了,请指点。

第一种情况

s =

s =


s =


s =


s =


s =


s =


s =



第二种情况
s =

s =


s =


s =


s =


s =


s =


s =

sfqxx 发表于 2023-2-20 21:13:08

本帖最后由 sfqxx 于 2023-2-20 21:22 编辑

完整切片函数有三个参数:word [ 开始的索引号:结束的索引号:步长]
只有二个参数的切片函数: word [ 开始的索引号:结束的索引号](默认步长为1)
只有一个参数的切片函数: word [ 开始的索引号:]   或 word [ :结束的索引号]
例子:>>> word='我的中国心'
>>> word
'我中心'
>>> word
'我的'
>>> word
'中国心'
>>> word[:2]
'我的'
>>> word
'中国心'

s就是把第4个元素第5个元素分别改成7,8

有用设置最佳答案谢谢

bluesky5210 发表于 2023-2-20 21:43:41


这是对 Python 列表切片(slicing)操作的一系列示例,具体每个操作的含义和结果如下:
第一种情况:

s = :将列表 s 中从索引 3 开始(包括索引 3)的元素替换为 ,即将原来的 替换为 ,最终结果为 。

s = :将列表 s 中从索引 3 到索引 1(不包括索引 1)的元素替换为 ,即将原来的 [] 替换为 ,最终结果为 。

s = :将列表 s 中从索引 3 到索引 2(不包括索引 2)的元素替换为 ,即将原来的 [] 替换为 ,最终结果为 。

s = :将列表 s 中从索引 3 到索引 3(不包括索引 3)的元素替换为 ,即将原来的 [] 替换为 ,最终结果为 。

s = :将列表 s 中从索引 3 到索引 4(不包括索引 4)的元素替换为 ,即将原来的 替换为 ,最终结果为 。

s = :将列表 s 中从索引 3 到索引 5(不包括索引 5)的元素替换为 ,即将原来的 替换为 ,最终结果为 。

s = :将列表 s 中从索引 3 到索引 6(不包括索引 6)的元素替换为 ,即将原来的 替换为 ,最终结果为 。

第二种情况:
s = :将列表 s 中下标为 3 及其之后的元素替换为 ,因此原来的 被删除了,s 变成了 。
s = :将列表 s 中下标为 3 到 1 之间的元素(不包括 1)替换为 ,由于切片的左右下标是反向的,因此实际上相当于在下标为 1 的位置插入了 ,s 变成了 。
s = :将列表 s 中下标为 3 到 2 之间的元素(不包括 2)替换为 ,同样相当于在下标为 2 的位置插入了 ,s 变成了 。
s = :将列表 s 中下标为 3 到 3 之间的元素替换为 ,这实际上是在下标为 3 的位置插入了 ,s 变成了 。
s = :将列表 s 中下标为 3 到 4 之间的元素替换为 ,由于这个区间只有一个元素 4,因此 s 变成了 。
s = :将列表 s 中下标为 3 到 5 之间的元素替换为 ,因此原来的 被替换为 ,s 变成了 。
s = :将列表 s 中下标为 3 到 6 之间的元素替换为 ,这个结果是不正确的。Python中的切片赋值操作 s = lst 会将 s 中下标从 i 到 j-1 的元素替换成 lst 中的元素,替换后 s 的长度可能会发生变化,但是 lst 的长度不会改变。在这个例子中,s = 的含义是将 s 中下标从 3 到 5 的元素替换成 ,也就是将 4, 5 替换成 7, 8。因此,正确的结果是:

s =
s =
print(s) #

ouyunfu 发表于 2023-2-20 22:43:22

列表切片是一种用于获取列表的子集的方法,通常的语法是list,其中start是切片的起始位置(包含),end是切片的结束位置(不包含),step是切片的步长。下面是一些常用的用法:

list:从start到end-1的子列表
list[:end]:从开头到end-1的子列表
list:从start到结尾的子列表
list[:]:列表的完整副本
list:从start到end-1的每隔step个元素的子列表
例如,假设有一个列表my_list = ,我们可以使用以下切片来获取不同的子列表:

my_list:获取包含元素2、3、4、5的子列表
my_list[:5]:获取包含元素0、1、2、3、4的子列表
my_list:获取包含元素5、6、7、8、9的子列表
my_list[::2]:获取包含元素0、2、4、6、8的子列表

wbzxz 发表于 2023-2-20 23:49:57

bluesky5210 发表于 2023-2-20 21:43
这是对 Python 列表切片(slicing)操作的一系列示例,具体每个操作的含义和结果如下:
第一种情况:

...

s = :将列表 s 中从索引 3 到索引 1(不包括索引 1)的元素替换为 ,即将原来的 [] 替换为 ,最终结果为 。

谢谢您,请问为什么是2个7呢?

wbzxz 发表于 2023-2-22 20:36:47

bluesky5210 发表于 2023-2-20 21:43
这是对 Python 列表切片(slicing)操作的一系列示例,具体每个操作的含义和结果如下:
第一种情况:

...

谢谢您,我消化消化啊,非常感谢。

歌者文明清理员 发表于 2023-2-22 21:11:23

wbzxz 发表于 2023-2-22 20:36
谢谢您,我消化消化啊,非常感谢。

请将解决问题的楼层设为最佳答案,不然一直挂着求助中,会覆盖真正需要帮助的帖子

歌者文明清理员 发表于 2023-2-22 21:11:27

wbzxz 发表于 2023-2-22 20:36
谢谢您,我消化消化啊,非常感谢。

请将解决问题的楼层设为最佳答案,不然一直挂着求助中,会覆盖真正需要帮助的帖子

tsElim 发表于 2023-2-23 09:21:03

期待高手解答。list:从start到end-1的每隔step个元素的子列表,没有step参数就是默认是1,但通常是end索引数字会比start大,这里出现的end索引小,怎么计算,期待高手能回答。
页: [1]
查看完整版本: 请问谁能解释这种列表切片的用法