gpt4 book ai didi

Python3列表切片: specific use in class method

转载 作者:行者123 更新时间:2023-11-30 21:51:47 25 4
gpt4 key购买 nike

我在这里看到了大量的Python列表切片问题,我不相信我在重复任何东西,尽管它涉及许多相同的问题。我的问题涉及使用切片缩短列表、创建新列表并更新原始列表。

我的任务是定义一个Class方法,它接受两个参数(word_list, num)并使用切片操作word_list。我继续切片,直到 word_list 为空,将每个切片存储在一个新列表中。就切片内容而言,我从哪一端切片并不重要,重要的是我可以继续切片并保持事件的准确记录。

采取以下措施:

word_list = ["once", "upon", "a", "time", "there", "lived", "an", "old", "man"]

sub_list1 = word_list[:2] # ["once", "upon"]
word_list = word_list[2:] # ["a", "time", "there", "lived", "an", "old", "man"]

与此比较

word_list = ["once", "upon", "a", "time", "there", "lived", "an", "old", "man"]

sub_list2 = word_list[-2:] # ["old", "man"]
word_list = word_list[:-2] # ["once", "upon", "a", "time", "there", "lived"]

在上面的第一个示例中,当切片被获取时,列表元素被“分流”,而第二个示例中列表只是变得更短并且没有任何“移动”。我是否发明了一个问题,或者以不同方式切片 word_list 是否有任何实际影响?

最佳答案

扩展切片语法的工作原理是创建一个 slice 对象以传递给适当的 __getitem__ 方法。 foo[x:y:z] 变为 foo.__getitem__(slice(x, y, z))

不对缺失值做出任何假设;值 None 只是传递给 slice。所以你的表情就变成了

word_list[:2]   -> word_list.__getitem__(slice(None, 2, None))
word_list[2:] -> word_list.__getitem__(slice(2, None, None))
word_list[:-2] -> word_list.__getitem__(slice(None, -2, None))
word_list[-2:] -> word_list.__getitem__(slice(-2, None, None))

__getitem__ 的实现来决定如何处理每个 None 值。通常,会考虑上下文。如果步长为正,则缺少开始将被视为 0;如果为负数,则为 -1。无论起始位置和停止位置如何,缺失的步骤通常默认为 1;这就是为什么像 foo[10:0] 这样的东西是空的,而不是假设您想要使用 -1 的步长。

关于Python3列表切片: specific use in class method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60044155/

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