首页 > 解决方案 > 具有可变步长的 Pythonic 列表切片?

问题描述

为了解决这个问题,假设我在 Python 中有以下列表,其中 X 是一个任意大的自然数:

l = [1, 2, 3, 4, 5, 6, 7, ... X]

我想对它进行切片,以便获取列表的第一个、第二个、第三个、第五个、第八个等元素,遵守斐波那契数列。例如,类似于以下的操作:

l_prime = [l[0], l[1], l[2], l[4], l[7], l[11], ...]

我对 Python 索引符号 of 感到满意l[start:end:step_size],并且我想知道是否有一种方法可以在这个符号范式中索引 Python 列表,其步长在每个索引添加到我的新切片列表后会发生变化。或者,我是否需要使用其他技术来解决我提出的先前问题?

标签: pythonlistindexing

解决方案


如果你可以使用 numpy 这真的很容易。

l = np.array([1, 2, 3, 4, ..., X])
fibs = np.array([0, 1, 2, 4, 7])
print(l[fibs])

推荐阅读