gpt4 book ai didi

python - 在 Python 中使用冒号对列表进行切片时,是否可以使用大于列表长度的停止大小?

转载 作者:行者123 更新时间:2023-12-04 12:20:03 24 4
gpt4 key购买 nike

我想使用 my_list[:3] 找到列表中的前 3 个元素,但我不能保证该列表的长度至少为 3。

我只能找到给定列表和小站的例子。所以,我想知道是否my_list[:3]不检查列表长度是可以接受的。

谢谢!

我自己试过,效果很好。但我想看看是否有任何关于 doc 的描述。

最佳答案

鉴于:

>>> li=[1,2,3]

实际上只有两种情况需要考虑。

1) 如果一个切片超出了列表的末尾,它将传递定义的元素和一个空列表的重叠,而不会出错:
>>> li[2:]
[3]
>>> li[3:]
[]
>>> li[5555:]
[]
>>> li[1:55555]
[2, 3]
>>> li[555:55555]
[]

2) 给定一个切片赋值,重叠元素被替换,其余元素被无误地追加:
>>> li[1:5]=[12,13,14,15,16]
>>> li
[1, 12, 13, 14, 15, 16, 15]
>>> li[555:556]=[555,556]
>>> li
[1, 12, 13, 14, 15, 16, 15, 555, 556]

那里的最后一种情况,切片分配是对不存在的元素,因此只是附加到现有元素。

但是,如果右手切片与左手现有元素不匹配,则可能会出现 ValueError对于具有扩展切片的非现有元素(即,如果您有 list_object[start:stop:step] ):
>>> li
[1, 2, 3]
>>> li[1:7:2]=range(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 4 to extended slice of size 1

但如果它们存在,您可以进行扩展切片分配:
>>> li=['X']*10
>>> li
['X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X']
>>> li[1:10:2]=range(5)
>>> li
['X', 0, 'X', 1, 'X', 2, 'X', 3, 'X', 4]

大多数时候——它按预期工作。如果要使用步骤进行分配,元素需要存在。

关于python - 在 Python 中使用冒号对列表进行切片时,是否可以使用大于列表长度的停止大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com