Explanation on python slice function output 关于Python切片函数输出的解释

huangapple go评论57阅读模式
英文:

explanation on python slice function output

问题

以下是代码的翻译部分:

a=[1,2,3,4,5,6,7,8,9]
print(a[8:-10:-2])

输出结果是 [9, 7, 5, 3, 1]

这段代码的逻辑是使用切片来获取列表 a 中的一部分元素。具体来说,a[8:-10:-2] 的含义如下:

  • a[8] 获取列表 a 中索引为 8 的元素,即 9。
  • a[-10] 获取列表 a 中倒数第 10 个元素,即 9(因为列表中没有倒数第 10 个元素,所以回到列表开头继续数)。
  • -2 表示步长,它指定了我们每次跳过多少个元素。在这里,步长为 -2 意味着我们逆向每次跳过两个元素。
  • 所以,代码将从索引 8(9)开始,然后向前跳过 2 个元素,再向前跳过 2 个元素,直到没有更多元素可跳过为止。

因此,最终的输出是 [9, 7, 5, 3, 1],这是根据切片的逻辑得出的结果,与你提到的其他平台的输出一致。

英文:
a=[1,2,3,4,5,6,7,8,9]
print(a[8:-10:-2])

output i get
[9, 7, 5, 3, 1]

can anyone explain the logic and breakdown of python code output. I m just a beginner. I asked bing ai and chat gpt for answer. According to them output should be empty list whereas according to replit, codechef and jdoodle output should be [9, 7, 5, 3, 1].

答案1

得分: 1

当我们使用a[start:stop:step]来切片列表时,切片操作从起始索引开始,止于结束索引(不包括结束索引),每隔step个元素取一个。

a[8:-10:-2] 表示从索引8(包括索引8)开始,倒序直到索引-10(不包括索引-10),每隔两个元素取一个。

因为我们在倒序切片列表,所以索引-10实际上等价于从列表末尾开始数的索引0。因此,该切片实际上是从索引8到索引0(不包括索引0)的倒序切片,每隔两个元素取一个,结果是 [9, 7, 5, 3, 1]。

希望这能帮助你。

英文:

When we slice a list with a[start:stop:step], the slicing will start from the start index and stop at the stop index (exclusive), taking every step element.

a[8:-10:-2] means starting from index 8 (inclusive), going up to index -10 (exclusive) in reverse order, and taking every second element.

Since we are slicing the list in reverse order, index -10 is actually equivalent to index 0 when counting from the end of the list. So the slice actually goes from index 8 to index 0 (exclusive) in reverse order, taking every second element, which gives us [9, 7, 5, 3, 1].

hopefully this helps

答案2

得分: 0

您的代码翻译成等效的内容如下:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
索引 = 8
结果 = []
while 索引 > len(a) + -10:
    结果.append(a[索引])
    索引 += -2
print(结果)

请注意,翻译中标识了8-10-2

英文:

Your code translates to something equivalent to this:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
index = 8
result = []
while index > len(a) + -10:
    result.append(a[index])
    index += -2
print(result)

Make sure you identify your 8, -10, and -2 in there.

huangapple
  • 本文由 发表于 2023年5月13日 21:32:01
  • 转载请务必保留本文链接:https://go.coder-hub.com/76242990.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定