Skip to main content
 首页 » 编程设计

python之从给定索引开始切片列表并用某个整数跳跃/步进它

2025年05月04日12me-sa

我对如何在 php 中执行此操作有大致的了解,但我是 Python 的新手,不确定如何执行此操作。

我正在尝试实现一个函数,该函数返回一个列表,其中包含列表中每三个元素的每个第二个元素。

例如,如果我的列表是:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12] 

我希望函数返回:

[2,5,8,11] 

一般来说,我认为我们会将列表的总值分成 3 个相等的部分,然后获取每个第二个元素?

[1, 2, 3,| 4, 5, 6,| 7, 8, 9,| 10,11,12] => [2,5,8,11] 

我试过 python split 函数,但它在列表上不起作用。我还必须考虑列表的总长度。它可能是偶数。

请您参考如下方法:

您所需要的只是从索引 1 开始的列表切片,然后您需要跳转 3 个索引:

>>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 
>>> my_list[1::3] 
[2, 5, 8, 11] 

列表切片的一般语法是your_list[start:end:jump] 其中:

  • start:是列表切片的起始索引。空值表示列表的开头,即索引 0

  • end:是要将列表切片到的索引。空值表示列表结束

  • jump:用于从 start 跳转元素,这样您将按照 的顺序获取值start、start+jump、start+2*jump,依此类推,直到您的列表到达end。空值表示 1

正如cᴏʟᴅsᴘᴇᴇᴅ先生所说在评论中,对于大型列表,应该更喜欢 itertools.islice它返回迭代器对象,在这种情况下可以用作:

from itertools import islice  # import islice 
 
islice(my_list, 1, None, 3)