我对如何在 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:是列表切片的起始索引。空值表示列表的开头,即索引0end:是要将列表切片到的索引。空值表示列表结束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)
